如何从容器中访问正在运行的docker容器外部ip?

时间:2017-02-22 23:28:05

标签: networking docker docker-compose

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

1 个答案:

答案 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主机中运行的其他容器的名称。

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