如何从容器内访问正在运行的docker container external ip?

当我通过docker-compose部署时,我可以在任何容器上运行检查并查看外部IP。

 $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' parentserver >>>172.17.0.3 

我的问题是,如果有人说, git clone我的仓库在本地机器上运行docker-compose ,那么parentserver的IP是否也是172.17.0.3呢?

我问的原因是我有微服务通过HTTP彼此交谈,我目前有我的应用程序逻辑硬编码的IP。

如果每个docker容器的IP地址都保证是相同的,不pipe它在哪里运行,这都不是问题,无论哪种方式,我需要find一个更好的解决scheme,这就是为什么我想知道我是否可以查询外部IP从容器内运行docker容器?

通过docker-compose创build的Docker容器默认放在共享networking中,并挂接到embedded式DNS服务器。 这意味着它们是默认链接的。 链接到容器“B”的容器“A”可以通过其分配的链接名称来ping容器“B”,默认情况下容器名称。

以我的nginxconfiguration为例:

 version: '2' services: # ... more config nginx: environment: API_DOMAIN: api.mysite.com FRONT_DOMAIN: 'mysite.com www.mysite.com' ERRBIT_DOMAIN: errbit.mysite.com ERRBIT_HOST: http://errbit:8080 PGADMIN_DOMAIN: pgadmin.mysite.com PGADMIN_HOST: http://pgadmin:5050 errbit: env_file: ./production/errbit.env 

我制作了一个nginx镜像,通过环境variables接受域名,主机是使用此configuration创build的同一个docker主机上运行的其他容器的名称。

https://docs.docker.com/engine/userguide/networking/