Cómo actualizar automáticamente tus contenedores en Docker
En este artículo, que podría ser un pique tranquilamente, te cuento como mantener actualizados tus contenedores con WatchTower.
Tengo dos contenedores corriendo servidores de Counter Strike en Docker y los mismos tienen un reto importante, que es mantenerlos actualizados ya que si no se despliegan las actualizaciones que se liberan cada semana, el server, de alguna manera queda inaccesible.
Entonces, lo que tuve que hacer es poner un contenedor que llamado WatchTower para que chequee cada tanto si esas imágenes se actualizaron y si las mismas lo hicieron, descargue el layer que se actualizó y cree nuevos contenedores con esa actualización.
Como comenté más arriba, WatchTower es un contenedor que corre junto con tus contenedores actuales, así que vamos a ver como se hace, aunque realmente es muy sencillo:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower
Lo único que hay que tener en cuenta es que debemos exponerle el socket de Docker como un volumen y no mucho más.
Si solamente querés mantener actualizado uno o varios contenedores pero no todos, podés especificar al final, el/los nombres del mismo y WatchTower sólo actualizará ese/esos contenedor/es. Por ejemplo:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower <nombre-contenedor>
Una vez que el contenedor este corriendo, hará una chequeo cada 5 segundos para ver si hay actualizaciones nuevas, si las hay, la bajará, hará un shutdown al contenedor y creará uno nuevo con los mismos argumentos/parámetros que le hayamos configurado. Es más, si hubiesen links entre contenedores u orden para el arranque, lo respestaría.
¿Lo probaste? ¿Qué te pareció? ¿Tuviste algún problema? deja en los comentarios tu opinión al respecto.
Si querés contribuir con el proyecto, este es su Github: