如何从容器内访问正在运行的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主机上运行的其他容器的名称。