Estoy usando docker-compose para la implementación. Quiero reiniciar mi contenedor "centos-1" desde el contenedor "centos-2". Ambos contenedores se ejecutan en el mismo host. Sugiera, ¿cómo podría lograr esto de la manera más simple y automatizada?
Seguí ¿Cómo ejecutar el script de shell en el host desde el contenedor docker? e intenté ejecutar una secuencia de comandos en el host desde el contenedor "centos-2", pero la secuencia de comandos se ejecuta dentro de un contenedor y no en el host.
Texto:
#!/bin/bash sudo docker container restart centos-1Error:
line 2: docker: command not found(Docker no está instalado dentro de ningún contenedor centos-2)
Necesitas:
Instale la CLI de docker (interfaz de línea de comandos) en el segundo contenedor. No confunda con la instalación a gran escala: no necesita el demonio de la ventana acoplable, solo la herramienta de línea de comandos (ejecutable de la docker )
Comparta el demonio (servicio) docker de su host para que sea accesible en el segundo contenedor . Eso se logra simplemente compartiendo /var/run/docker.sock al iniciar el segundo contenedor, ejemplo:
docker run ... -v "/var/run/docker.sock:/var/run/docker.sock" container2 ... Ahora puede ejecutar cualquier comando de la ventana acoplable, como docker stop de la ventana acoplable desde el segundo contenedor y estos comandos se pasan felizmente a su demonio principal (y el único) de la ventana acoplable.
Existe un enfoque desde el contexto de CI para controlar Docker Daemon en el sistema desde un contenedor en ejecución llamado Docker-out-of-Docker (DooD):
volumes -v /var/run/docker.sock:/var/run/docker.sock Ahora cada comando de la ventana acoplable dentro de su contenedor se ejecuta en la instalación de la ventana acoplable del sistema. Por ejemplo, si escribe docker image list dentro de su contenedor, debería haber la misma lista que si escribiera el comando en su sistema.