101
Juani Gallo
@JuaniGallo
Programador
Emprendedor
Founder
[Link]
1. Que es Docker
2. Como escribir un Dockerfile
3. Manejo de contenedores e imagenes
¿Qué es Docker?
Docker es un proyecto de código abierto que automatiza el despliegue
de aplicaciones dentro de contenedores de software, proporcionando una capa
adicional de abstracción y automatización de virtualización de aplicaciones en
múltiples sistemas operativos.
🤔
🤔
🤔🤔
🤔🤔
Docker crea una computadora virtual adentro de tu computadora con todo lo
necesario para correr tu aplicación.
¿Para que sirve Docker?
• Para correr nuestra aplicación con la
misma infraestructura que producción
• Para simplificar el onboarding de nuestra
aplicación
• Levantar servicios en distintos lenguajes
sin tener que instalar todo lo relacionado a
cada uno de ellos
1. Para correr nuestra aplicación con la
misma infraestructura que producción
2. Para simplificar el onboarding de nuestra
aplicación
3. Levantar servicios en distintos lenguajes
sin tener que instalar todo lo relacionado
a cada uno de ellos
Conceptos básicos
Container
Un contenedor es una pieza de software que contiene todo lo necesario
para correr una aplicación (código + dependencias).
Un container siempre tiene un estado asignado y los estados
disponibles son: “created”, “restarting”, “running”, “removing”,
“paused”, “exited” y “dead”
Created
El contenedor se creo sin errores pero no esta corriendo. Este estado
es útil para cuando queremos crear un contenedor pero todavía no
utilizarlo
Restarting
El contenedor se esta reiniciando. Este estado puede darse en el caso
que desde un comando reiniciemos el contenedor o bien por un error
relacionado a código en el mismo.
Running
Nuestro contenedor esta creado y corriendo sin ningún problema
Removing
El contenedor se esta removiendo pero todavía sigue creado, en este
momento ya no podemos acceder al mismo
Paused
El contenedor esta creado pero pausado. En este estado podemos
acceder al contenedor pero su código no está en ejecución
Exited
Podemos llegar a este estado porque el container termino de ejecutar
su código de forma correcta o bien porque se encontró con algún
problema durante su ejecución. Si su “status code” es 0 quiere decir
que el container termino sin problemas, cualquier otro numero distinto
de 0 implica que el container no termino su ejecución de forma correcta.
Dead
Es el estado terminal del container. Usualmente se da cuando el
container pierde acceso de escritura a archivos necesarios para
funcionar.
Aplicación con un único container
Container
Código
Dependencias
Docker
Sistema operativo
Aplicación con tres containers
Container Container Container
Código Código Código
Dependencias Dependencias Dependencias
Docker
Sistema operativo
containers
Docker crea una computadora virtual adentro de tu computadora con todo lo
necesario para correr tu aplicación.
Image
Una imagen es una plantilla creada a partir de una serie de instrucciones
para luego crear containers en base a esta. Para crear imágenes vamos
a crear un archivo llamado Dockerfile.
En [Link] podes encontrar una biblioteca con
muchísimas imágenes públicas (por ejemplo: Ubuntu, NGINX, Mongo,
Node)
Instalemos Docker
MacOS
Desde MacOS Sierra 10.12 para arriba
[Link]
Si tiene un OS más antiguo que Sierra 10.12, hay que instalar
Docker Toolbox
[Link]
Ubuntu
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl
gnupg-agent software-properties-common
curl -fsSL [Link] |
sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://
[Link]/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli [Link]
[Link]
Otras distros de Linux
Ubuntu: [Link]
Debian: [Link]
Fedora: [Link]
CentOS: [Link]
Windows 7, 8 o 10 versión “Pro” 64 bits
[Link]
Hay que crearse una cuenta y descargar el Docker Desktop
Windows 7, 8 o 10 versión “Home” 64 bits
Para versiones que no son Pro o versiones viejas de
Windows, hay que instalar el Docker Toolbox
[Link]
[Link]
El Docker Toolbox instala 3 archivos, Docker Quickstart,
Oracle VM y Kitematic.
Una vez instalado hay que activar el Hyper-V en la BIOS de la
PC.
Activar Hyper-V (Windows)
En todas las PCs se entra al BIOS de una manera diferente, HP suele ser F1,
Lenovo F8, muchas otras es Supr, hay que apretar este botón varias veces
cuando apenas se prende la PC. Vamos a entrar a una pantalla azul con
varias opciones, cada PC tiene su propia configuración, lo que vamos a tener
que buscar es la opción “Security” o “Configuration”, una vez dentro vamos a
tener que pasar a “enable” la opción que diga: “Hyper-V”, puede también
llamarse “Virtualization”, “Intel Vitualization” o “VTX”.
Una vez que Hyper-V está activado, ya podemos volver a iniciar el Windows y
abrir el ejecutable: “Docker Quickstart”.
[Link]
Dockerfile
¿Qué es un Dockerfile?
Es un documento de texto que contiene todos los comandos que vamos
a ejecutar a la hora de crear nuestra imagen. Se podría decir que
nuestro Dockerfile va a ser la receta que Docker va a seguir para poder
crear nuestra imagen.
FROM
El comando FROM nos va a servir para basar nuestra nueva imagen en
una imagen ya existente (las podemos ver en: [Link]
Este comando siempre tiene que ser el primero en nuestro Dockerfile
RUN
El comando RUN nos va a servir para correr comandos en una terminal
dentro de nuestro container. Esto es util para cambiar configuración a
nivel sistema operativo o bien instalar paquetes de forma global.
CMD
El comando CMD nos va a servir para indicarle a nuestra imagen que
comando tiene que correr por defecto al crear nuestro container. En caso
de que nuestro comando contenga parámetros hay que escribir el
comando en formato de array[]
EXPOSE
El comando EXPOSE nos va a servir para indicarle a nuestro container
que puerto escuchar mientras este corriendo. Esto es especialmente útil
para cuando estamos corriendo un servidor.
WORKDIR
El comando WORKDIR nos va a servir para indicarle a nuestra imagen
que directorio tiene que usar como base para los comandos que
modifiquen el sistema de archivos. En caso de que no exista el directorio
indicado, Docker lo va a crear.
COPY
El comando COPY nos va a servir para copiar archivos desde nuestra
computadora a nuestra imagen de Docker. Con el comando COPY
podemos copiar archivos o directorios completos.
COPY
El comando COPY nos va a servir para copiar archivos desde nuestra
computadora a nuestra imagen de Docker. Con el comando COPY
podemos copiar archivos o directorios completos.
Imagen docker
Nuestra computadora
ENV
El comando ENV nos va a servir para crear variables de ambiente dentro
de nuestra imagen. Por ejemplo para indicarle si estamos en un
ambiente de testing o productivo.
¿Qué hace este Dockerfile?
¿Qué hace este Dockerfile?
Se rompe
¿Qué hace este Dockerfile?
[Link]
[Link]
Instrucciones básicas
docker ps
El comando docker ps nos sirve para listar todos los contenedores que
actualmente estén corriendo.
En caso de querer ver los contenedores que ya terminaron o murieron en el
pasado, podemos correr el comando docker ps -a
docker ps
Identificador unico Hace cuanto que fue
generado por Docker creado el contenedor
docker ps
Imagen asociada Comando CMD que corrimos
al contenedor en nuestro Dockerfile
Puerto en el que esta corriendo nuestro
Nombre de nuestro
Estado actual del contenedor contenedor
contenedor
Puerto computadora -> puerto contenedor
docker build
El comando docker build nos sirve para crear una imagen en base a un
Dockerfile
El uso normal del comando es: docker build . lo que nos va a generar una
imagen en base a un Dockerfile situado en esa misma carpeta.
Para crear una imagen
+
docker build
…
docker images
El comando docker images nos sirve para listar todas las imágenes que
creamos
docker images
El nombre de docker images
nuestra imagen Hace cuanto fue creada
nuestra imagen
Peso de nuestra
El tag/version de El identificador unico de imagen
nuestra imagen nuestra imagen
docker run
El comando docker run nos sirve para crear un container a partir de una
imagen
Proyecto a Dockerizar
GitHub
[Link]
¡A codear! 💪
Slides
[Link]