Docker

Fundamentos

¿Qué es docker?

Docker es un proyecto de licencia libre que permite ejecutar procesos de automatización dentro de contenedores otorgandoles capas adicionales para ejecutar los procesos de automatización. Estos contenedores se montan virtualmente en el sistema operativo.

Diferencia entre contenedores y máquinas virtuales

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La diferencia entre un contenedor y una máquina virtual radica en la forma en que se ejecutan en el sistema operativo, ya que cada máquina virtual genera su propio entorno, por lo que, es muy dificil replicar las condiciones especificas del entorno de una máquina virtual, por otra parte, los contenedores se ejecutan dentro del mismo entorno, compartiendo el mismo kernel gracias al Docker Engine, por lo que, replicar su entorno es más sencillo.

Las imagenes de docker estan compuestas por diferentes capas, estas capas pueden compatirse entre varias imagenes.

Instalar docker

Para instalar docker en nuestra computadora es necesario descargar Docker Desktop, un programa que nos ayudara a ejecutar Docker, para ello ingresa a la página oficial de docker para descargar el instalador.

Comandos de docker

Correr una imagen

Para poder correr una imagen es necesario ejecutar el comando:
docker run <image-name>
Puedes ejecutar imagenes proporcionadas de Docker Hub. Si ejecutas el comando docker run y la imagen no existe en tu computadora, docker la descargara y después la ejecutara.

Descargar imagen de docker hub

Para descargar una imagen (sin correr) de Docker Hub ingresa el siguiente comando:
docker pull <image-name>

Mostrar imagenes

Para mostrar las imagenes que existen en tu computadora, corre el siguiente comando:
docker images
Si quieres acceder a la información más relevante, agrega la bandera head por ejemplo: docker images | head

Mostrar contenedores

Para mostrar los contenedores que estan corriendo en tu computadora, ejecuta:
docker ps
Si quieres obtener todos los contenedores que existen en tu computadora, introduce docker ps -a

Correr un contenedor

Para correr un contenedor, debes introducir el comando: docker start <container-id>

Mostra los logs de un contenedor

Si quieres ver toda la información que esta pasando en un contenedor, ejecuta: docker logs <container-id | container-name>
Si deseas obtener los logs en todo momento que se esta ejecutando un contenedor, agrega la bandera -f, por ejemplo: docker logs -f <container-id | container-name>

Ejecutar comandos dentro de un contenedor

Para ejecutar un comando dentro de un contenedor que actualmente esta corriendo, utiliza el comando exec:
docker exec -it <container-id | container-name> sh
La bandera -i crea una sesión interactive y la bandera -t va a emular una terminal.

Dockerfile

Es un archivo que debe llamarse Dockerfile, dentro de el se escribe el contenido de nuestro contenedor, para declarar el contenido utilizamos las siguientes declaraciones:

FROM

FROM es una declaración con la cual especificamos de que imagen será la base de nuestro contenedor, dicha imagen puede ser encontrada en Docker Hub o incluso una imagen que nosotros hayamos creado previamente.

WORKDIR

WORKDIR es una declaración para especificar nuestra ubicación de trabajo principal, es decir, la ruta de donde va a partir la ejecución de nuestra imagen.

COPY

Con COPY podemos copiar archivos desde nuestra computadora al contenedor que estamos creando, por ejemplo, copiar una carpeta de archivos al contenedor.

Run

Con RUN podemos ejecutar comandos dentro de la imagen de docker.

CMD

Con CMD le indicamos a nuestra imagen de docker un comando que debe correr siempre que se ejecute el contenedor, esta línea va al final del archivo.

ENTRYPOINT

Con ENTRYPOINT declaramos una terminal abierto con la cual al ejecutar el contenedor podemos pasarle argumentos para que se ejecute un comando.

Construir contenedor a partir de Dockerfile

Para construir nuestro contenedor de docker debemos ejecutar: docker build -t <nombre-imagen> . para ejecutarla introduce docker run <nombre-imagen>

En caso de que quieras exponer un puerto del contenedor en tu computadora ejecuta lo siguiente: docker run -dp <puerto-docker>:<puerto-host> <nombre-imagen>.

Docker compose

Docker compose es una herramienta para almacenar comandos de docker, para utilizar Docker compose debes crear el archivo docker-compose.yml.

Para correr el archivo docker compose, simplemente ejecuta: docker-compose up -d en el mismo directorio que tienes el docker-compose.yml