如何从容器内访问正在运行的docker container external ip?
问题描述:
当我通过docker-compose
进行部署时,我可以运行检查任何容器并查看外部IP。如何从容器内访问正在运行的docker container external ip?
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' parentserver
>>>172.17.0.3
我的问题是,如果有人,比如说,git clone
我自己的本地计算机上存储库和运行docker-compose
,是它保证的parentserver
的IP将是他们的机器上172.17.0.3呢?
我问的原因是我有微服务,通过HTTP相互交谈,我目前有我的应用程序逻辑内硬编码的IP。
如果每个码头集装箱的IP无论在哪里运行都保证是相同的,这不会是一个问题,无论哪种方式我需要找到一个更好的解决方案,这就是为什么我想知道我是否可以从容器内运行docker容器查询外部IP?
答
默认情况下,通过docker-compose
创建的Docker容器被放置在共享网络中,并挂接到嵌入式DNS服务器。这意味着它们默认为linked。链接到容器“B”的容器“A”可以通过其分配的链接名称(默认情况下,容器名称)来容器容器“B”。
以一个例子我nginx的配置:
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上的图像,和主机在同一泊坞窗主机上运行的其他容器的名称创建使用这个配置。
冷静,这样我就可以替换该服务的实际容器名称我所有的硬编码的HTTP请求172.17.0.3? – david
没错。做一个快速的ping测试。 – nicooga