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
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 .
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
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
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