我正在使用docker-compose进行部署。 我想从“ centos-2”容器重新启动“ centos-1”容器。两个容器都在同一主机上运行。 请提出建议,我该如何以最简单和自动化的方式实现这一目标?
我跟随How to run shell script on host from docker container?并尝试从“ centos-2”容器在Host上运行脚本,但是该脚本在容器内而不是在主机上执行。
脚本:
#!/bin/bash
sudo docker container restart centos-1
错误:
line 2: docker: command not found
(Docker没有安装在任何centos-2容器中)
答案 0 :(得分:3)
您需要:
在第二个容器上安装Docker CLI(命令行界面)。不要与全面安装相混淆-您不需要docker daemon,只需命令行工具(docker
可执行文件)
与您共享主机的 Docker守护程序(服务),以使其在第二个容器中可访问。这可以通过在启动第二个容器时简单地共享/var/run/docker.sock
来实现,例如:
docker run ... -v "/var/run/docker.sock:/var/run/docker.sock" container2 ...
现在您可以从第二个容器中执行任何docker命令,例如docker stop
,并且这些命令会愉快地传递到您的主(也是唯一的)docker守护程序。
答案 1 :(得分:2)
CI上下文中有一种方法可以从运行中的容器Docker-out-of-Docker(DooD)控制系统上的Docker守护进程:
volumes
在容器中将docker安装映射到容器中的系统 -v /var/run/docker.sock:/var/run/docker.sock
现在,容器中的每个docker命令都在系统docker安装上执行。例如。如果在容器内键入docker image list
,则应该与在系统上键入命令时使用相同的列表。