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

8 浏览
0 Comments

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

我正在使用docker-compose进行部署。

我想从"centos-2"容器中重新启动我的"centos-1"容器。这两个容器都在同一台主机上运行。

请建议,我怎样才能以最简单和自动化的方式实现这一点?

我按照如何从docker容器中的主机运行shell脚本?的方法尝试从"centos-2"容器上运行主机上的脚本,但是脚本在容器内执行而不是在主机上执行。

脚本:

    #!/bin/bash
    sudo docker container restart centos-1

错误:

    line 2: docker: command not found

(任何centos-2容器内都没有安装Docker)

0
0 Comments

问题出现的原因是通过在运行的容器中安装Docker,并将系统中的Docker安装映射到容器中,从而在CI环境中控制系统上的Docker守护进程。解决方法是使用Docker-out-of-Docker(DooD)方法。具体步骤如下:

1. 在容器中安装Docker。

2. 使用volumes将系统中的Docker安装映射到容器中。

-v /var/run/docker.sock:/var/run/docker.sock

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

0
0 Comments

原因:需要从一个正在运行的容器中重新启动另一个Docker容器。

解决方法:

1. 在第二个容器中安装Docker CLI(命令行接口)。不要与完整安装混淆-您不需要Docker守护程序,只需要命令行工具(docker可执行文件)。

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

docker run ... -v "/var/run/docker.sock:/var/run/docker.sock" container2 ...

3. 现在,您可以执行任何Docker命令,例如从第二个容器中执行docker stop等命令,并且这些命令会被传递到您的主要(也是唯一的)Docker守护程序。

解决方法有效,谢谢!

0