Docker: 源容器重启时/etc/hosts文件未能自动更新

5

假设我有以下内容:

  • a pg_db container

    docker run -d --name pg_db postgres
    
  • a web container, linked to the pg_db container

    docker run -d --name web --link pg_db:db my-web-app
    
web 容器中,我可以通过 /etc/hosts 名称解析访问 pg_db
# cat /etc/hosts
...
172.17.0.17    db

但是,如果我重新启动pg_db容器,它会有一个新的IP地址,而文档说链接的容器应该自动更新它们的/etc/hosts文件,但这并不是我的情况。

$ docker restart pg_db
$ docker inspect --format '{{.NetworkSettings.IPAddress}}' pg_db
172.17.0.21

同时,在仍在运行的Web容器中:

# cat /etc/hosts
...
172.17.0.17    db        <-- No change!!!
  • 这是一个错误吗?
  • 还是这是因为Docker的新行为,因此这个点上的文档已过时

$ docker info
Containers: 5
Images: 67
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 77
Execution Driver: native-0.2
Kernel Version: 3.13.0-24-generic
Operating System: Ubuntu 14.04 LTS

$ docker version
Client version: 1.3.0
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): c78088f
OS/Arch (client): linux/amd64
Server version: 1.3.0
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): c78088f

我不知道为什么你被踩了,这是一个很好的问题。 - SomeKittens
我认为获取数据库容器的IP地址的[更多]可接受的方法是通过ENV变量。DB_HOST_PORT_ADDRESS和DB_HOST_PORT(如果我没记错)。请注意,第一部分(DB)是容器的名称。我认为此链接可能会有所帮助。 - Thom Parkin
1个回答

0

你还需要重新启动 Web 容器以使更改生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接