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.
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.
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.
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.
Para descargar una imagen (sin correr) de Docker Hub ingresa el siguiente comando:
docker pull <image-name>
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
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
Para correr un contenedor, debes introducir el comando: docker start <container-id>
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>
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.
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
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
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.
Con COPY
podemos copiar archivos desde nuestra computadora al contenedor que estamos creando, por ejemplo, copiar una carpeta de archivos al contenedor.
Con RUN
podemos ejecutar comandos dentro de la imagen de docker.
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.
Con ENTRYPOINT
declaramos una terminal abierto con la cual al ejecutar el contenedor podemos pasarle argumentos para que se ejecute un comando.
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 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