Docker

Cristian  Suárez

Cristian  Suárez

¿Qué es Docker?

Conceptos

image

class Whale {

    eyes = 2

    years = 1

}

container

class Whale {

    eyes = 2

    years = 1

}

monstro

monstra

Volume

class Whale {

    eyes = 2

    year = 1

}

monstro

monstra

weight = 100

weight = 300

¿Cómo funciona Docker?

docker run -it ubuntu

root@bd679435750a:/# uname
Linux

root@bd679435750a:/# apt update

root@bd679435750a:/# apt upgrade

CGROUP

 

- RAM

- CPU

- MEMORY

- NETWORK

NAMESPACE

 

 

 

 

 

namepace-1

 

process-1

process-3

process-5

namepace-2

 

process-2

process-4

process-6

docker run -it --rm ubuntu
sleep 30
ps -ejH
 3358  3358  3358 ?        00:00:09   dockerd
 3793  3793  3793 ?        00:00:14     docker-containe
 9967  9967  3793 ?        00:00:00       docker-containe
 9991  9991  9991 pts/0    00:00:00         bash
10776 10776  9991 pts/0    00:00:00           sleep
docker run -it --rm ubuntu
sleep 30

Image from backblaze

Empezar a trabajar

Instalación

Dockerfile

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

instrucciones dockerfile

  • FROM
  • LABEL
  • WORKDIR
  • COPY or ADD
  • RUN
  • EXPOSE
  • ENTRYPOINT
  • CMD
  • ...

Organizacion en capas

FROM ubuntu:18.04

COPY . /app

RUN make /app

CMD python /app/app.py

Optimizar imágenes

FROM node:13.6-alpine

COPY . /app

WORKDIR /app

RUN npm install

EXPOSE 8080

CMD node ./src/index.js
FROM node:alpine

COPY package.json /app/package.json

WORKDIR /app

RUN npm install

COPY ./src /app/src

EXPOSE 8080

CMD node ./src/index.js
FROM node:alpine

WORKDIR /app

RUN npm install express@4.17.1 \
    mongoose@5.8.5 \
    moment@2.24.0 \
    helmet@3.21.2

EXPOSE 8080

COPY ./src /app/src

CMD node ./src/index.js
FROM node:10-alpine as builder

WORKDIR /app

COPY ./package.json ./package.json

RUN npm install

COPY ./src /app/src

RUN npm run build
FROM node:10-alpine as builder

WORKDIR /app

COPY ./package.json ./package.json

RUN npm install

COPY ./src /app/src

RUN npm run build
FROM node:10-alpine

WORKDIR /app

COPY --from=builder /app/build/index.js ./index.js
COPY --from=builder /app/node_modules ./node_modules/

EXPOSE 8080

CMD node ./index.js
FROM node:10-alpine as builder

WORKDIR /app

COPY ./package.json ./package.json

RUN npm install

COPY ./src /app/src

RUN npm run build
FROM node:10-alpine

WORKDIR /app

COPY --from=builder /app/build/index.js ./index.js
COPY --from=builder /app/node_modules ./node_modules/

EXPOSE 8080

CMD node ./index.js

Comandos útiles

docker container run -d IMAGE 

 

docker container run -ti IMAGE

 

docker container run -p 8000:5000 IMAGE

 

docker container run --rm IMAGE

 

docker container run -e MY_VARIABLE=foo IMAGE

conectar con IDE

visual studio code

intellij idea

preguntas?

Cómo puedo conectar varios contenedores?

docker-compose

Formulario de valoración

https://forms.gle/Wc1biM91Tnq9WfZy9

referencias

Cristian  Suárez

Cristian  Suárez