2017-02-22 116 views
0

当我通过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?

回答

1

默认情况下,通过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上的图像,和主机在同一泊坞窗主机上运行的其他容器的名称创建使用这个配置。

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

+0

冷静,这样我就可以替换该服务的实际容器名称我所有的硬编码的HTTP请求172.17.0.3? – david

+0

没错。做一个快速的ping测试。 – nicooga

相关问题