Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:/etc/hosts在源容器重新启动时不会自动更新_Docker - Fatal编程技术网

Docker:/etc/hosts在源容器重新启动时不会自动更新

Docker:/etc/hosts在源容器重新启动时不会自动更新,docker,Docker,假设我有: 一个pg_db容器 docker run -d --name pg_db postgres docker run -d --name web --link pg_db:db my-web-app 链接到pg_db容器的web容器 docker run -d --name pg_db postgres docker run -d --name web --link pg_db:db my-web-app 在web容器中,我可以通过/etc/hosts名称解析访问pg_d

假设我有:

  • 一个
    pg_db
    容器

    docker run -d --name pg_db postgres
    
    docker run -d --name web --link pg_db:db my-web-app
    
  • 链接到
    pg_db
    容器的
    web
    容器

    docker run -d --name pg_db postgres
    
    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!!!

您还必须重新启动web容器以获取更改。

我不知道您为什么被否决,这是一个问得很好的问题。我认为获得db容器IP地址的[更]被接受的方法是通过ENV VAR。DB_主机_端口_地址和DB_主机_端口(iirc)。认识到第一部分(DB)是容器的名称。我想可能会有帮助。