Docker es una herramienta de código abierto que empaqueta la (s) aplicación (s), todos los paquetes requeridos y su sistema operativo base en paquetes contenedores. Como los contenedores Docker son independientes, se ejecutan en cualquier sistema sin necesidad de reconfiguración.
Docker construye contenedores a partir de imágenes. Una imagen de Docker es un paquete independiente que define todos los requisitos necesarios para ejecutar una aplicación, como sistema operativo, tiempo de ejecución, herramientas del sistema, bibliotecas, configuraciones y más. Docker convierte las imágenes en contenedores durante el tiempo de ejecución.
Docker crea imágenes a partir de configuraciones definidas en un DockerFile. Un DockerFile es simplemente un archivo de configuración que establece todas las instrucciones para crear una imagen de Docker. Como resultado, la construcción de imágenes Docker utilizando un DockerFile es más fácil y mucho más eficiente.
Esta guía lo guiará a través de la creación de un Dockerfile y lo usará para construir una imagen de Docker.
Formato de dockerfile
El Dockerfile es un documento de texto sin procesar. Las entradas en DockerFile están en el siguiente formato:
$ Argumento (s) de instrucción (s)
La primera parte define los comandos Docker que puede usar en un Docker Shell. El segundo representa los argumentos o valores específicos para pasar a la instrucción primaria.
NOTA: Las instrucciones no son sensibles a los casos. Sin embargo, Docker recomienda usar mayúsculas para distinguirlos de los argumentos.
Las siguientes son algunas instrucciones populares en un Dockerfile.
DE - Esta instrucción define la imagen principal para las instrucciones posteriores. De la cláusula debe ser la primera entrada en un Dockerfile. Puede venir después de un comentario o una directiva de análisis o arg.
Argumento - Define las variables utilizadas durante la compilación una vez que ejecuta el comando de compilación de Docker en el archivo.
CMD - Esto establece el comando ejecutado en la creación de contenedores. Docker solo permite una instrucción CMD por archivo. Cuando tienes más de uno definido, ejecuta el último comando.
ETIQUETA - La instrucción de la etiqueta define información de metadatos para la imagen. Puede agregar tantas etiquetas como se ve en forma de pares de valores clave. Por ejemplo, los metadatos de imagen podrían incluir el número de versión, información del autor, descripción, etc.
CORRER - Establece las instrucciones que se ejecutarán durante la compilación de la imagen.
USUARIO - Esta instrucción establece el nombre de usuario o UID del usuario al ejecutar la imagen o las instrucciones en un DockerFile como CMD, Run y EntryPoint.
PUNTO DE ENTRADA - Define los comandos que Docker se ejecuta en la creación de contenedores. Las opciones son anulables en la línea de comando durante el inicio del contenedor.
AGREGAR - Esta instrucción copia archivos y directorios de la fuente especificada a un destino especificado. La fuente puede ser una ruta local o una URL externa. Si los archivos son archivos, Docker los desempaqueta automáticamente en la imagen.
VOLUMEN - Las instrucciones de volumen le permiten crear puntos de montaje a partir de directorios de máquinas host u otros contenedores.
EXPONER - Esta instrucción le dice a Docker qué puerto escuchar durante el tiempo de ejecución.
Envidia - Establece variables de entorno.
Huella de trabajo - Establece el directorio de trabajo actual. Si el directorio especificado no existe, Docker creará automáticamente uno.
Las anteriores son algunas instrucciones estándar que puede usar en un Dockerfile.
Cómo crear un Dockerfile
El proceso de crear un Dockerfile es sencillo. Comience creando un directorio de trabajo para sus operaciones de Docker. A continuación, cree un Dockerfile y edítelo con su editor de texto favorito.
$ CD ~
$ Mkdir Docker
$ CD Docker
$ touch dockerfile
$ vim dockerfile
Comenzamos obteniendo la imagen base del Docker Hub. Podemos hacer esto usando la instrucción de Dockerfile.
En este ejemplo, crearemos un contenedor simple que contenga la ejecución del servidor Nginx en la imagen de Debian 10.
Imagen de Debian 10 en Docker Hub
Edite el DockerFile y agregue las siguientes entradas.
De Ebian: 10.9
Ejecute Apt-Get Update && \
apt -get install -y nginx \
Label mantenedor = "Linuxhint"
Versión de etiqueta = ”1.0 "
Descripción de la etiqueta = ”Una imagen simple que ejecuta Nginx en Debain 10"
Exponer 80/TCP
CMD ["Nginx", "-g", 'Daemon Off;']
En el Dockerfile anterior, comenzamos definiendo la imagen base (Debian 10.9)
Ejecutamos varios comandos APT para actualizar los paquetes e instalar Nginx Web-server.
Luego agregamos información de metadatos sobre la imagen, incluido el mantenedor, la versión y la descripción.
Finalmente, establecemos el puerto de exposición, y el comando apaga el demonio nginx. El comando anterior evita que el contenedor se detenga.
Guarde el archivo y ejecute la compilación de Docker en el archivo.
Cómo construir una imagen de Dockerfile
Una vez que tenemos el Dockerfile completo, podemos proceder a construir la imagen. Ejecute el comando Docker Build dentro del directorio Docker:
$ CD ~/Docker
$ Docker Build -Pull -RM -f "Dockerfile" -t Docker: Último "."
En el comando anterior, usamos el comando de compilación de Docker y pasamos varias opciones. Por ejemplo, el -Pull le dice a Docker que intente extraer la última versión de la imagen.
El -RM elimina los contenedores inmediatos después de que se completa el proceso de compilación de la imagen.
-F especifica el nombre de DockerFile.
Finalmente, la opción -t establece la etiqueta para la imagen.
Los comandos de arriba construirán con éxito la imagen y la almacenarán en su disco local.
Puede verificar la imagen existe llamando al comando:
$ Docker Image LS
$ Docker Último 162E94589BEC 2 minutos hace 233 MB
Cómo crear un contenedor Docker
Ahora que tenemos la imagen del Dockerfile, podemos seguir adelante y generar un contenedor. Para hacer esto, usamos el comando Docker Run como:
$ Docker Run -P 80:80 -Nombre Nginx Docker
Los comandos anteriores iniciarán el contenedor con el nombre Nginx y atarán el contenedor al puerto 80.
Para mostrar los contenedores en ejecución, use el comando:
$ Docker Container LS
1C90266035B5 NGINX: Hace 57 segundos hasta 56 segundos 80/TCP Nginx
El comando anterior muestra el contenedor Nginx en ejecución.
Conclusión
Este tutorial cubrió la escritura Dockerfiles, la creación de imágenes y la ejecución de un contenedor Docker desde las imágenes. Para obtener más información sobre DockerFiles, considere la documentación.