Tutoriales

Ejecución de contenedores Docker con actualizaciones automáticas de Watchtower

Mantener actualizados los contenedores de Docker es uno de los trabajos importantes de un ingeniero de DevOps. Actualizar manualmente los contenedores de Docker es una tarea que requiere bastante tiempo.Esta guía explica qué es torre de vigilanciacómo instalar torres de vigilancia y cómo instalar Actualice automáticamente los contenedores de Docker en ejecución con Watchtower en linux

¿Qué es una torre de vigilancia?

torre de vigilancia es una aplicación gratuita y de código abierto que le permite monitorear contenedores Docker en ejecución y actualizarlos automáticamente si se detectan cambios en sus imágenes base.

Cuando Watchtower descubre si es necesario actualizar un contenedor en ejecución, lo detendrá con gracia enviando una señal SIGTERM.

Luego descargará la nueva imagen y finalmente reiniciará el contenedor con las mismas opciones con las que se implementó originalmente. Todo se hará automáticamente en segundo plano, por lo que no se requiere la intervención del usuario.yo

En esta guía, veremos cómo usar Watchtower para actualizar automáticamente los contenedores Docker en ejecución en sistemas operativos similares a Unix.

Probé esta guía en los sistemas CentOS y Ubuntu, pero el proceso es el mismo para todas las distribuciones de Linux.

Instalar Atalaya en Linux

Watchtower en sí está disponible como una imagen de Docker. Así que implementarlo no es un gran problema. Instale Docker en su máquina Linux e inmediatamente comience a ejecutar Watchtower para monitorear los contenedores de Docker.

Consulte las siguientes guías para instalar Docker en sistemas basados ​​en RPM y DEB.

Después de instalar Docker, puede implementar el contenedor Watchtower con el siguiente comando: raíz usuario:

# docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

Si tiene instalado Docker Desktop, ejecute el contenedor Watchtower como un usuario normal.

$ docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

Este comando extraerá la última imagen de la torre de vigilancia e iniciará el contenedor de la torre de vigilancia.

Salida de muestra:

Unable to find image 'containrrr/watchtower:latest' locally
latest: Pulling from containrrr/watchtower
1045b2f97fda: Pull complete 
35a104a262d3: Pull complete 
1a0671483169: Pull complete 
Digest: sha256:bbf9794a691b59ed2ed3089fec53844f14ada249ee5e372ff0e595b73f4e9ab3
Status: Downloaded newer image for containrrr/watchtower:latest
91c104ef0e9896e8cd5ff30d9f13e728dbfad66443830ec2ac85dde6d7d37564
Ejecutar el contenedor Docker de Watchtower

Actualice automáticamente los contenedores de Docker en ejecución con Watchtower

Watchtower ahora ha comenzado a usar otros contenedores en ejecución en su sistema. Puede ver una lista de contenedores Docker en ejecución con el siguiente comando:

$ docker ps

Salida de muestra:

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                         NAMES
91c104ef0e98   containrrr/watchtower       "/watchtower"            14 minutes ago   Up 14 minutes   8080/tcp                                      watchtower
f90b462b0712   bitnami/wordpress-nginx:6   "/opt/bitnami/script…"   19 minutes ago   Up 19 minutes   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp   ostechnix-wordpress-1

Como puede ver en el resultado anterior, el contenedor Watchtower se está ejecutando con otro contenedor llamado «ostechnix-wordpress-1»A partir de ahora, Watchtower comenzará a monitorear este contenedor cada pocos minutos.

Si encuentra algún cambio en la imagen base de este contenedor, cerrará correctamente el contenedor «ostechnix-wordpress-1» y lo reiniciará con una nueva imagen con las mismas opciones con las que se inició originalmente.

Del mismo modo, comprueba automáticamente si hay actualizaciones en todos los contenedores en ejecución cada pocos minutos y las actualiza automáticamente.

¿Cómo actualiza Watchtower el contenedor de enlaces múltiples?

Watchtower es lo suficientemente inteligente cuando monitorea múltiples contenedores vinculados.

Supongamos que ahora estamos ejecutando dos contenedores.

$ docker ps

Salida de muestra:

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                         NAMES
91c104ef0e98   containrrr/watchtower       "/watchtower"            14 minutes ago   Up 14 minutes   8080/tcp                                      watchtower
f90b462b0712   bitnami/wordpress-nginx:6   "/opt/bitnami/script…"   19 minutes ago   Up 19 minutes   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp   ostechnix-wordpress-1
a895f082438a   bitnami/mariadb:10.6        "/opt/bitnami/script…"   20 minutes ago   Up 19 minutes   3306/tcp                                      ostechnix-mariadb-1
Ver contenedores de Docker en ejecución
Ver contenedores de Docker en ejecución

Como puede ver en el resultado anterior, estamos ejecutando dos contenedores, «ostechnix-wordpress-1» y «ostechnix-mariadb-1». El contenedor de mariadb está vinculado al contenedor de wordpress.

Si Watchtower ve una actualización del contenedor «wordpress», primero cerrará el contenedor vinculado, «mariadb», y luego detendrá el contenedor wordpress.

Después de actualizar el contenedor de wordpress, Watchtower reiniciará ambos contenedores en el orden correcto usando las mismas opciones que se usaron cuando se implementó inicialmente, para que la aplicación se reanude correctamente. En nuestro caso, el contenedor de mariadb se iniciará primero, seguido del contenedor de wordpress para garantizar que la vinculación continúe funcionando.

Supervisar contenedores específicos

De manera predeterminada, Watchtower monitoreará todos los contenedores de Docker que se ejecutan en el demonio de Docker al que apunta.

Sin embargo, puede restringir la torre de vigilancia para que vigile un contenedor Docker específico especificando el nombre del contenedor, como se muestra a continuación.

$ docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower ostechnix-wordpress-1

En el ejemplo anterior, Watchtower solo monitoreará el contenedor llamado «ostechnix-wordpress-1» en busca de actualizaciones, y se ignorarán otros contenedores en ejecución.

Si no se especifican argumentos, Watchtower supervisará todos los contenedores Docker en ejecución como de costumbre.

Enviar notificación

Es posible que desee recibir una notificación cuando se actualice el contenedor. Puede enviar notificaciones por correo electrónico, Slack, MSTeams, Gotify y más.

El siguiente ejemplo muestra cómo enviar notificaciones por correo electrónico. Supongo que ya tiene configurado un servidor SMTP.

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e WATCHTOWER_NOTIFICATIONS=email \
  -e [email protected] \
  -e [email protected] \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
  -e [email protected] \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password \
  -e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
  containrrr/watchtower

Para obtener más detalles, consulte el repositorio GitHub de Watchtower y los enlaces del sitio web oficial de Watchtower que se proporcionan a continuación.

recurso:

Descarga recomendadaLibro electrónico gratuito: «Libro de recetas de contenedorización de Docker»

LEER  Cómo instalar el repositorio EPEL en RHEL 9 Linux

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba