我一直想知道链接的容器是否关闭并再次启动,与其链接的容器是否关闭 恢复 --link 连接?
点燃 2 个容器。
docker run -d --name fluentd millisami/fluentd
docker run -d --name railsapp --link fluentd:fluentd millisami/rails
现在,如果 fluidd 容器停止并重新启动,railsapp
容器会自动恢复链接和链接的 ENV 变量吗?
最佳答案
更新:
从 Docker 1.3 开始(或者甚至可能从早期版本开始,不确定),/etc/hosts
文件如果重新启动,将使用链接容器的新 IP 进行更新。这意味着如果您通过 /etc/hosts
中的名称访问它与环境变量相反,您的链接即使在重新启动后仍然有效。
示例:
当你启动两个容器时app_image
和mysql
并像这样链接它们:
$ docker run --name mysql mysql:5.6.20
$ docker run -d --link mysql:mysql app_image
您将在 /etc/hosts
中获得一个条目app_image
内:
# /etc/hosts example
mysql 172.17.0.12
并且该IP将被刷新,以防mysql
崩溃并重新启动。
因此,在引用链接容器时不要使用环境变量:
$ ping $MYSQL_PORT_3306_TCP_ADDR # --> don't use! won't work after the linked container restarts
$ ping mysql # --> instead, access it by the name as in /etc/hosts
旧答案:
不,不会。面对容器崩溃的情况,链接就像死了一样。我认为这几乎是一个悬而未决的问题,即有很多候选解决方案,但还没有一个成为标准方法。
您可能想看看http://jasonwilder.com/blog/2014/07/15/docker-service-discovery/
关于docker - 链接的 docker 容器在关闭和启动时是否会获取链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093498/