从另一个正在运行的容器重新启动Docker容器

时间:2019-05-21 13:17:49

标签: docker docker-compose

我正在使用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容器中)

2 个答案:

答案 0 :(得分:3)

您需要:

  1. 在第二个容器上安装Docker CLI(命令行界面)。不要与全面安装相混淆-您不需要docker daemon,只需命令行工具(docker可执行文件)

  2. 与您共享主机的 Docker守护程序(服务),以使其在第二个容器中可访问。这可以通过在启动第二个容器时简单地共享/var/run/docker.sock来实现,例如:

    docker run ... -v "/var/run/docker.sock:/var/run/docker.sock" container2 ...
    
  3. 现在您可以从第二个容器中执行任何docker命令,例如docker stop,并且这些命令会愉快地传递到您的主(也是唯一的)docker守护程序。

答案 1 :(得分:2)

CI上下文中有一种方法可以从运行中的容器Docker-out-of-Docker(DooD)控制系统上的Docker守护进程:

  1. 您必须在容器中安装docker
  2. 使用volumes在容器中将docker安装映射到容器中的系统
  -v /var/run/docker.sock:/var/run/docker.sock

现在,容器中的每个docker命令都在系统docker安装上执行。例如。如果在容器内键入docker image list,则应该与在系统上键入命令时使用相同的列表。