如何在不重新启动的情况下链接到其他容器?

时间:2015-08-21 23:25:32

标签: docker

来自https://groups.google.com/forum/#!topic/docker-user/A180aHSlQRE

的X-post

假设我运行以下命令将web容器链接到db container-

new Recipe(recipe);

现在我希望我的Web容器链接到其他容器而不重新启动Web容器。可能吗?

2 个答案:

答案 0 :(得分:4)

不,一旦启动,您就无法将容器链接到另一个容器。但是您可以将新容器链接到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

找出该容器的详细信息,看看您是否想在您创建的新容器中使用它们。您可以尝试的另一件事是让您的web容器具有交互性,因此一旦启动它就可以在运行时对其进行修改。

答案 1 :(得分:1)

实际上,有办法克服这个限制。

在这种情况下,您可以将LINKED_CONTAINER_IP和LINKED_CONTAINER_NAME直接添加到&#34; HOST CONTAINER&#34;的/ etc / hosts文件中。使用以下程序:

  1. 获取您想要另外链接到&#34;主机容器&#34;的正在运行的容器的IP地址。使用

    docker inspect --format '{{ .NetworkSettings.IPAddress }}' CONTAINERID

  2. 直接来自主持人

    3然后将名称中的ip添加到&#34; HOST CONTAINER&#34;的/etc/hosts中。文件如下

    • 首先获得运行主机容器

      的交互式访问权限

      docker exec -it CONTAINERID sh

    • 进入shell提示后,使用

      将行添加到/etc/hosts文件

      echo "LINKED_CONTAINER_IP LINKED_CONTAINER_NAME" >> /etc/hosts

      1. 使用ping LINKED_CONTAINER_NAME
      2. 进行验证

    请注意这是临时解决方案,只有在重新启动任何容器之后才能使用,在这种情况下,IP地址可能会更改,因此解析为LINKED_NAME将不再有效!