从另一个容器

时间:2017-05-18 15:28:36

标签: docker

我正在尝试使用两个容器设置Docker。一个是Web应用程序,第二个是dnsmasq DHCP服务器。

Docker应该从Web应用程序的事件更新dnsmasq容器和dhcp ip列表。到目前为止,我唯一的选择是生成dhcp hosts文件并重新启动dnsmasq容器,但需要在Web应用程序容器外部的Docker主机中手动完成。

有没有办法从另一个容器重启服务?

2 个答案:

答案 0 :(得分:1)

从另一个容器重启容器的唯一方法是挂载/var/run/docker.sock并使用API​​。但出于明显的安全原因,我不会从网络应用程序那样做。

我将在容器之间共享dhcp hosts文件(使用-v option),并在dnsmasq容器中运行一个脚本,检查此文件中的更改并重新启动容器中的dnsmasq服务。没有必要重启容器。您可以使用Supervisord启动dnsmasq和此脚本。我会使用--init标志来避免僵尸进程。

答案 1 :(得分:1)

来自您的主持人:

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock --name=xxx ubuntu bash

docker cp /usr/bin/docker xxx:/usr/bin/docker

进入容器并检查未解析的库:

ldd /usr/bin/docker

手动将缺少的libs从主机复制到容器中,并根据需要设置包括符号链接。在我的情况下,我不得不:

docker cp /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 xxx:/usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1

然后在容器内我必须:

ln -sf /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 /usr/lib/x86_64-linux-gnu/libltdl.so.7

在容器内再次检查:ldd /usr/bin/docker如果一切正常,您现在可以在容器内运行docker

请注意,当我从主机复制到容器时,docker-compose会立即运行。只有docker我必须复制额外的库并设置符号链接。