Dockerfile es un archivo de texto simple que contiene todos los comandos que el usuario puede llamar en la línea de comandos para ensamblar o construir una imagen. Con la ayuda de la compilación de docker, puede automatizar fácilmente la compilación que ejecuta múltiples comandos definidos en el dockerfile en sucesión.
Por ejemplo, desea descargar la imagen de la ventana acoplable desde el concentrador de la ventana acoplable para sus necesidades de desarrollo específicas. Luego, desea actualizar la imagen, instale algunos paquetes para su proceso de desarrollo. En este caso, puede crear un archivo docker, incluir todos los parámetros para sus necesidades específicas y crear su imagen personalizada. Después de crear un archivo docker, puede usarlo una y otra vez para crear la misma imagen sin instalar manualmente todos los paquetes necesarios para su proceso de desarrollo.
Dockerfile básico
Antes de trabajar con dockerfile, es importante saber cómo hacer un dockerfile. Dockerfile incluye palabras clave específicas que se pueden usar para crear una imagen específica. A continuación, se incluye una breve explicación de todas las palabras clave utilizadas en un archivo docker:
- DE: Se utiliza para definir la imagen base, sobre la que estaremos construyendo.
- AGREGAR: Se utiliza para agregar archivos al contenedor que se está construyendo. En términos simples, RUN se usa para ejecutar comandos y confirma el resultado
- CORRER: Se utiliza para agregar capas a la imagen base, instalando componentes.
- CMD: Se utiliza para ejecutar comandos al inicio del contenedor. Estos comandos se ejecutan solo cuando no hay ningún argumento especificado mientras se ejecuta el contenedor.
- PUNTO DE ENTRADA: Se utiliza para ejecutar comandos durante el proceso de inicialización del contenedor. Debe usar un ENTRYPOINT en su archivo docke si desea iniciar un contenedor automáticamente después de construir una imagen.
- ENV: Se utiliza para definir variables de entorno en el tiempo de ejecución del contenedor.
- EXPONER: Se utiliza para especificar el puerto de escucha para habilitar la red en tiempo de ejecución.
- MANTENIMIENTO: Se utiliza para especificar el nombre y la identificación de correo electrónico del creador de la imagen.
- USUARIO: Se utiliza para especificar el nombre de usuario utilizado para ejecutar el contenedor.
- VOLUMEN: Se utiliza para permitir el acceso desde el contenedor al directorio en el host de Docker.
- WORKDIR: Se utiliza para especificar la ruta del comando que se ejecutará en tiempo de ejecución.
- ETIQUETA: Se utiliza para agregar etiquetas a la imagen de la ventana acoplable.
Creando el Dockerfile
En esta sección, crearemos un archivo docker para construir una imagen de servidor LAMP a partir de la imagen base de Ubuntu.
Primero, necesitará crear un directorio para almacenar el dockerfile. Puedes crearlo con el siguiente comando:
LÁMPARA mkdirA continuación, cree un directorio llamado Dockerfile dentro del directorio:
nano LAMP / DockerfileAgrega las siguientes líneas:
DESDE ubuntu: últimoMANTENIMIENTO Hitesh Jethva
ENV DEBIAN_FRONTEND = no interactivo
EJECUTAR apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "PRIMER PLANO"]
EXPONER 8080
Guarde y cierre el archivo cuando haya terminado.
Construyendo imagen con Dockerfile
Después de crear el Dockerfile, puede crear fácilmente una imagen LAMP personalizada con la ayuda de Dockerfile.
Primero, cambie el directorio a LAMP y ejecute el siguiente comando para construir la imagen a partir de ese archivo:
LÁMPARA cddocker build -t "lámpara: Dockerfile".
El comando anterior comenzará a descargar la última imagen de Ubuntu desde Docker Hub e instalará los paquetes necesarios especificados en Dockerfile. Una vez que la imagen se haya creado correctamente, debería ver el siguiente resultado:
Envío de contexto de compilación al demonio 2 de Docker.048kBPaso 1/6: DESDE ubuntu: último
último: Extrayendo de la biblioteca / ubuntu
54ee1f796a1e: Extracción completa
f7bfea53ad12: Extracción completa
46d371e02073: Tire completo
b66c17bbf772: Extracción completa
Resumen: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Estado: imagen más reciente descargada para ubuntu: última
---> 4e2eef94cd6b
Paso 2/6: MANTENIMIENTO Hitesh Jethva
---> Ejecutando en 047977af2c2a
Extracción del recipiente intermedio 047977af2c2a
---> 1331df625c4c
Paso 3/6: ENV DEBIAN_FRONTEND = no interactivo
---> Ejecutando en 3597152c7a1b
Extracción del contenedor intermedio 3597152c7a1b
---> 86c82c95e75d
Paso 4/6: EJECUTE apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Extracción del contenedor intermedio 322532299fd9
---> f6897a9554f7
Paso 5/6: CMD ["apachectl", "- D", "PRIMER PLANO"]
---> Ejecutando en 669635bc8bcb
Extracción del contenedor intermedio 669635bc8bcb
---> e8400eb2e677
Paso 6/6: EXPONER 8080
---> Ejecutando en 937ae2b2d305
Extracción del contenedor intermedio 937ae2b2d305
---> 2123a857361d
Construido con éxito 2123a857361d
Lámpara etiquetada correctamente: Dockerfile
Ahora puede enumerar la imagen que acaba de crear ejecutando el siguiente comando:
imágenes de dockerDebería ver el siguiente resultado:
TAMAÑO DE ID DE IMAGEN DE ETIQUETA DE REPOSITORIO CREADOlamp Dockerfile 2123a857361d Hace 44 segundos 520MB
ubuntu último 4e2eef94cd6b hace 8 días 73.9 MB
Ahora, tiene una imagen de servidor LAMP personalizada en su mano. También puede ver el historial de cada comando con el siguiente comando:
lámpara de historial de Docker: DockerfileDebería ver el siguiente resultado:
IMAGEN CREADA CREADA POR TAMAÑO COMENTARIO2123a857361d hace 16 minutos / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 Hace 16 minutos / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 Hace 16 minutos / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d hace 17 minutos / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c Hace 17 minutos / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b hace 8 días / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Creación de un contenedor a partir de la imagen LAMP
Ahora, puede ejecutar un contenedor desde su imagen usando el siguiente comando:
docker run -dit lámpara: DockerfileUna vez que se ha iniciado el contenedor, debería ver el siguiente resultado:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Puede verificar el contenedor en ejecución con el siguiente comando:
docker psDebería obtener el siguiente resultado:
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOSc14794784eb2 lámpara: Dockerfile "apachectl -D FOREGR…" Hace 2 minutos Arriba 2 minutos 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Conclusión
En esta guía, aprendió qué es Dockerfile y cómo crear una imagen de Docker con Dockerfile. Esto es muy útil para crear sus imágenes personalizadas en lugar de realizar cambios en una imagen extraída.