Cómo crear imágenes de contenedores Docker con Dockerfile

En nuestros artículos anteriores, hemos discutido cómo instalar y configurar Docker en CentOS 7.x y Servidor Ubuntu 16.04. También hemos aprendido cómo extraer imágenes de Docker desde Docker Hub/registro. Existen algunas circunstancias y casos de uso en los que queremos realizar cambios en las imágenes de Docker y esos cambios deben estar disponibles cada vez que lanzamos o aprovisionamos un contenedor de Docker. Esto se puede lograr de tres maneras diferentes:

  • Cometer
  • Dockerfile
  • Componer ventana acoplable

Commit es una opción en el comando Docker que nos permite guardar los cambios de un contenedor en una imagen de Docker. Una de las limitaciones de la confirmación es que no es escalable y es muy difícil automatizar las tareas. En nuestro último artículo, también aprendimos cómo usar el comando de confirmación de Docker. Además de Docker Commit, podemos construir las imágenes de Docker usando “Dockerfile“.

Dockerfile es un archivo de texto o un script que contiene palabras clave y un conjunto de comandos de Linux que se ejecutan automáticamente cada vez que creamos la imagen de Docker. La creación de imágenes de Docker con un archivo de Docker es similar al concepto de plantilla del mundo de virtualización. En este artículo, discutiremos cómo crear imágenes acoplables a partir del archivo acoplable. Algunas de las palabras clave que generalmente se usan en un Dockerfile se enumeran a continuación:

DESDE

En Palabra clave, especifique el nombre de la imagen que se usará como imagen base al crear la imagen de Docker. El comando de Docker buscará esta imagen en el repositorio de imágenes local, si no está disponible en el repositorio local, la obtendrá del servidor de registro.

Ejemplo:

FROM  Ubuntu:14.04

MANTENEDOR

El nombre de la comunidad o individuo que mantiene la imagen de la ventana acoplable se especifica en la palabra clave MAINTAINER.

Ejemplo:

MAINTAINER  Linuxtechi Team <[email protected]>

CORRER

Los comandos mencionados después de la palabra clave RUN se ejecutarán durante la creación de la imagen de Docker

Ejemplo :

RUN  apt-get update
RUN apt-get install apache2 -y
RUN echo 'Web site Hosted inside a container' > /var/ww/html/index.html
RUN echo 'apache2ctl start' >> /root/.bashrc

CMD

Los comandos mencionados después de la palabra clave CMD se ejecutarán cuando se inicie un contenedor desde una imagen acoplable

Ejemplo:

CMD /bin/bash
CMD wget {url}

Siempre que usemos varias palabras clave de CMD, la última obtendrá la preferencia. Si ha notado que cuando lanzamos un contenedor, obtenemos un shell bash debido a la palabra clave CMD (CMD /bin/bash).

PUNTO DE ENTRADA

ENTRYPOINT es similar a CMD, los comandos después del punto de entrada tomarán argumentos de CMD o, en otras palabras, podemos decir que CMD es el argumento para ENTRYPOINT. Los comandos en ENTRYPOINT siempre se ejecutarán.

Ejemplo:

ENTRYPIONT ["curl"]
CMD ["www.google.com"]

ENV

Con la palabra clave ENV podemos configurar las variables ambientales o de shell según los requisitos, supongamos que quiero crear una imagen de Docker donde instalaré Java y necesito configurar la ruta JAVA, esto se puede lograr usando la palabra clave ENV.

Ejemplo:

ENV JAVA_HOME= /usr/jdk/jdk{version}

VOLUMEN

Con la palabra clave VOLUMEN podemos adjuntar una carpeta del host del motor Docker a un contenedor.

Ejemplo:

VOLUME  /mnt/dock_storage  /data

EXPONER

Con la palabra clave EXPOSE podemos exponer el puerto de la aplicación desde el Contenedor

Ejemplo:

EXPOSE 8080

COPIAR

Usando la palabra clave COPY podemos copiar los archivos de Docker Host a un contenedor.

Ejemplo:

COPY /my.txt   /etc

AGREGAR

Con la palabra clave ADD podemos especificar el nombre de nuestra imagen qcow2 en la nube, que queremos usar para construir la imagen de la ventana acoplable desde cero.

Ejemplo :

FROM scratch
ADD centos-7-3.qcow2

Para ver las palabras clave y el comando que se utilizan para crear la imagen de la ventana acoplable, use el comando «historial de la ventana acoplable». Veamos las palabras clave y los comandos de una imagen acoplable Ubuntu:14.04

# docker history ubuntu:14.04

docker-history-command-output

En el resultado anterior, si la palabra clave no se menciona en los comandos, estos comandos se ejecutarán en la palabra clave EJECUTAR.

Consulte los siguientes pasos para crear la imagen de Docker utilizando las palabras clave discutidas anteriormente.

Paso:1 Crear un Dockerfile

Primero creemos una carpeta con el nombre mycode en / file system y luego creemos Dockerfile en esta carpeta

[[email protected] ~]# mkdir /mycode
[[email protected] ~]# cd /mycode/
[[email protected] mycode]# touch Dockerfile
[[email protected] mycode]#

Nota : El nombre del archivo docker debe ser «Dockerfile», si no seguimos esta convención, nuestro comando de compilación docker no funcionará.

Paso:2 Agregar palabras clave y comandos a Dockerfile

Abra el Dockerfile con el editor vi y agregue las siguientes palabras clave

[[email protected] mycode]# vi Dockerfile
FROM mycentos:v2

MAINTAINER  Linuxtechi Team <[email protected]>

RUN yum -y install httpd php

RUN echo "Website is hosted inside a container" > /var/www/html/index.html

EXPOSE 80

VOLUME /mnt/docker_vol  /data

RUN echo "httpd" >> /root/.bashrc

CMD ["/bin/bash"]

Guardar y salir del archivo.

Paso: 3 Cree la imagen usando el ‘comando de compilación de la ventana acoplable’

Vaya a la carpeta /mycode y ejecute el siguiente comando, en el comando de compilación docker -t La opción se usa para establecer el nombre de la etiqueta de la imagen de la ventana acoplable, en mi caso, estoy configurando el nombre de la imagen de la ventana acoplable y la etiqueta como «mycentos:apachev1

[[email protected] mycode]# docker build -t mycentos:apachev1 .

ventana acoplable-construir-comando-salida

Paso:4 Verifique la nueva imagen de Docker e inicie un contenedor

Primero veamos si la nueva imagen de la ventana acoplable está disponible en el repositorio de imágenes local usando el siguiente comando

[[email protected] ~]# docker images

ventana acoplable-imágenes-comando-salida

Ahora inicie un contenedor y vea si el servidor web Apache se está ejecutando o no y también verifique si el volumen está montado o no.

[[email protected] ~]# docker run -it -p 80:80 --name=web_container1 mycentos:apachev1

docker-ejecutar-comando-salida

En el escenario anterior, he usado una imagen acoplable ya descargada como base para crear una nueva imagen acoplable. En caso de que desee utilizar su propia imagen en la nube (qcow2) como imagen base para Docker, también es posible con la palabra clave ADD. Asegúrese de copiar el archivo qcow2 en la misma carpeta donde reside su «Dockerfile». Repita todos los pasos anteriores y el único cambio está en el Dockerfile.

El contenido de Sample Dockerfile se encuentra a continuación

FROM scratch

MAINTAINER  Linuxtechi Team <[email protected]>

ADD CentOS-7-x86_64.qcow2 /

RUN yum -y install httpd php

RUN echo "Website is hosted inside a container" > /var/www/html/index.html

EXPOSE 80

VOLUME /mnt/docker_vol  /data

RUN echo "httpd" >> /root/.bashrc

CMD ["/bin/bash"]

Eso es todo, espero que tengas una idea de cómo construir tus imágenes acoplables usando Dockerfile. Por favor comparta sus opiniones y comentarios

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *