如何链接到附加容器而不重新启动?
来自https://groups.google.com/forum/#!topic/docker-user/A180aHSlQRE的 Xpost
假设我运行以下命令将web容器链接到db container-
docker run -d -P --name web --link db training/webapp python app.py
现在我想我的Web容器链接到额外的容器,而无需重新启动Web容器。 可能吗?
不,一旦启动,您就无法将容器链接到另一个容器。 但是,您可以将新的容器链接到web
容器:
docker run -d -P --name myapp --link web <image> <command>
或者你可以链接另一个web
容器到数据库容器:
docker run -d -P --name web2 --link db training/webapp python app.py
话虽如此,因为你的第一个web
容器正在运行,你也可以运行:
docker inspect web
找出该容器的细节,看看你是否想在你创build的新容器中使用它们。 你可以尝试的另一件事是让你的web
容器交互,所以一旦你开始它可以在运行时修改它。
其实,有办法克服这个限制。
在这种情况下你可以做什么,使用以下步骤直接将LINKED_CONTAINER_IP和LINKED_CONTAINER_NAME添加到“HOST CONTAINER”的/ etc / hosts文件中:
-
获取您要另外链接到“主机容器”使用的正在运行的容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' CONTAINERID
直接从主机
3,然后将该名称添加到“HOST CONTAINER”文件的/etc/hosts
中,如下所示
-
首先进入运行主机容器的交互访问权限
docker exec -it CONTAINERID sh
-
一旦进入shell提示符后,使用添加行到
/etc/hosts
文件echo "LINKED_CONTAINER_IP LINKED_CONTAINER_NAME" >> /etc/hosts
- 使用
ping LINKED_CONTAINER_NAME
validation
- 使用
请注意, 这是一个临时的解决scheme ,只有在任何容器重新启动的情况下才有效,在这种情况下,IP地址可能会改变,因此parsing为LINKED_NAME将不再起作用!