当我通过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无论在哪里运行都是相同的,这不会是一个问题,无论哪种方式我都需要找到更好的解决方案,这就是为什么我想知道我是否可以查询从容器内运行docker容器的外部IP?
答案 0 :(得分:1)
默认情况下,通过docker-compose
创建的Docker容器放在共享网络中,并挂钩到嵌入式DNS服务器。这意味着它们默认为linked。一个容器" A"与容器相关联" B"可以ping容器" 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映像,它通过环境变量接受域,而主机是在使用此配置创建的同一个docker主机中运行的其他容器的名称。