I am using docker-compose for deployment.
I want to restart my “centos-1” container from “centos-2” container. Both containers are running on the same host.
Please suggest, How could I achieve this in a simplest and automated way?
I followed How to run shell script on host from docker container? and tried to run a script on Host from “centos-2” container, but the script is executing inside a container and not on the host.
Script:
#!/bin/bash
sudo docker container restart centos-1
Error:
line 2: docker: command not found
(Docker isn’t installed inside any centos-2 container)
2
Answers
You need:
Install docker CLI (command line interface) on second container. Do not confuse with full scale installation – you dont need docker daemon, only command line tool (
docker
executable)Share you host’s docker daemon (service) to make it accessible in second container. That is achieved with simply sharing
/var/run/docker.sock
when launching 2nd container, example:Now you can execute any docker command, like
docker stop
from second container and these commands are happily passed to your main (and the only) docker daemon.There is a approach from the CI-context to control the Docker Daemon on System from a running container called Docker-out-of-Docker (DooD):
volumes
Now each docker command inside your container are execute on the system docker installation. E.g. if you type
docker image list
inside your container there should be the same list as if your type the command on your system.