Este tutorial se concentrará en cómo crear una imagen de Docker personalizada basada en Ubuntu con Apache servicio instalado. Todo el proceso se automatizará utilizando un Dockerfile .
Las imágenes de Docker se pueden crear automáticamente a partir de archivos de texto, denominados Dockerfiles. . Un archivo de Docker contiene instrucciones o comandos ordenados paso a paso que se utilizan para crear y configurar una imagen de Docker.
Requisitos
- Instalar Docker y aprender a manipular contenedores de Docker:parte 1
- Implementar y ejecutar aplicaciones en contenedores Docker:parte 2
Básicamente, un archivo Docker contiene varias instrucciones para crear y configurar un contenedor específico según sus requisitos. Las siguientes instrucciones son las más utilizadas, siendo algunas de ellas obligatorias:
FROM
=Obligatorio como primera instrucción en un archivo Docker. Indica a Docker que extraiga la imagen base a partir de la cual está creando la nueva imagen. Use una etiqueta para especificar la imagen exacta a partir de la cual está construyendo:
Ex: FROM ubuntu:20.04
MAINTAINER
=Autor de la imagen de compilaciónRUN
=Esta instrucción se puede usar en varias líneas y ejecuta cualquier comando después de que se haya creado una imagen de Docker.CMD
=Ejecute cualquier comando cuando se inicie la imagen de Docker. Use solo una instrucción CMD en un Dockerfile.ENTRYPOINT
=Igual que CMD pero se usa como comando principal para la imagen.EXPOSE
=Indica al contenedor que escuche en los puertos de red cuando se ejecuta. Los puertos del contenedor no son accesibles desde el host de forma predeterminada.ENV
=Establecer variables de entorno del contenedor.ADD
=Copiar recursos (archivos, directorios o archivos de URL).
Paso 1:crear o escribir un repositorio de Dockerfile
/var
partición donde crearemos el archivo con las instrucciones que se usarán para construir la nueva imagen de Docker.
# mkdir -p /var/docker/ubuntu/apache # touch /var/docker/ubuntu/apache/Dockerfile
# vi /var/docker/ubuntu/apache/Dockerfile
Extracto del archivo Doker:
FROM ubuntu MAINTAINER your_name <[email protected]> RUN apt-get -y install apache2 RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html EXPOSE 80 CMD /usr/sbin/apache2ctl -D FOREGROUND
Ahora, repasemos las instrucciones del archivo:
La primera línea nos dice que estamos construyendo desde un Ubuntu imagen. Si no se envía ninguna etiqueta, diga 14:10 por ejemplo, la última imagen de Docker Hub se utiliza.
En la segunda línea, hemos agregado el nombre y correo electrónico del creador de la imagen. Siguientes dos CORRE Las líneas se ejecutarán en el contenedor al construir la imagen y se instalará Apache demonio y eco algo de texto en la página web predeterminada de Apache.
La EXPOSICIÓN la línea instruirá a el Docker contenedor para escuchar en el puerto 80 , pero el puerto no estará disponible para el exterior. La última línea indica al contenedor que ejecute el servicio Apache en primer plano después de iniciar el contenedor.
ubuntu-apache
basado en el Dockerfile creado anteriormente, como se muestra en este ejemplo:
# docker build -t ubuntu-apache /var/docker/ubuntu/apache/
# docker images
Paso 2:Ejecute el contenedor y acceda a Apache desde LAN
# docker run -d -p 81:80 ubuntu-apache
Aquí, el -d
La opción ejecuta ubuntu-apache
contenedor en segundo plano (como un demonio) y el -p
opción asigna el puerto del contenedor 80 a su puerto localhost 81 . El acceso LAN externo al servicio Apache se puede alcanzar a través del puerto 81 solo.
El comando Netstat le dará una idea de qué puertos está escuchando el host.
Una vez iniciado el contenedor, también puede ejecutar docker ps
comando para ver el estado del contenedor en ejecución.
# ip addr [List nework interfaces] # curl ip-address:81 [System Docker IP Address] # curl localhost:81 [Localhost]
http://ip-address:81
# docker ps # docker top <name or ID of the container>
docker stop
comando seguido del ID o nombre del contenedor.
# docker stop <name or ID of the container> # docker ps
--name
opción como se muestra en el siguiente ejemplo:
# docker run --name my-www -d -p 81:80 ubuntu-apache # docker ps
Ahora puede hacer referencia al contenedor para su manipulación (inicio, detención, superior, estadísticas, etc.) solo con el nombre asignado.
# docker stats my-www
Paso 3:Cree un archivo de configuración para todo el sistema para Docker Container
Por ejemplo, cree un nuevo archivo systemd llamado, digamos, apache-docker.service
usando el siguiente comando:
# vi /etc/systemd/system/apache-docker.service
apache-docker.servicio extracto del archivo:
[Unit] Description=apache container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a my-www ExecStop=/usr/bin/docker stop -t 2 my-www [Install] WantedBy=local.target
# systemctl daemon-reload # systemctl start apache-docker.service # systemctl status apache-docker.service
Este fue solo un ejemplo simple de lo que puede hacer con un Dockerfile simple pero puede crear previamente algunas aplicaciones bastante sofisticadas que puede iniciar en cuestión de segundos con recursos y esfuerzo mínimos.
Lecturas adicionales:
Parte 4 :Cómo monitorear contenedores Docker en Linux