Docker 容器到主机路由

Docker Container to Host Routing

我需要一个更好的最新解决方案来解决以下问题:

问题:我必须手动创建一个 iptable 规则以允许从动态 docker 网桥到主机的路由。否则容器 a 无法连接到容器 b,因为默认情况下没有从 docker 网络到 docker 主机本身的路由。

我有以下设置:

container-nginx (docker)
|
|-container-jira (docker) (https://jira.example.com)
|-container-confluence (docker) (https://confluence.example.com)

为了在 Jira 和 Confluence 之间建立正常运行的 Atlassian 应用链接:

我使用 docker-compose 进行整个设置,所有容器都在同一个网络中。默认情况下,这将不起作用我将在主机 confluence.example.com 和 jira.example.com 的两个容器中得到 "no route to host"。因为 docker 网络中的每个容器都没有到 docker 主机本身的路由。

目前,每次初始化设置时,我都会手动创建一个 iptable 规则,从动态创建的 docker 网桥到主机的 ID "br-wejfiweji"。

这个比较麻烦,有没有"a new way"或者"better way"可以做到Docker 1.11.x?

docker-compose 版本 2 确实创建了一个允许所有容器相互查看的网络。参见“Networking in Compose”(自 docker 1.10 起)

如果您的容器是使用正确的主机名创建的,即 jira.example.comconfluence.example.com(参见 docker-compose.yml hostname directive),nginx 可以直接代理传递给 jira.example.comconfluence.example.com.
这两个主机名将解析为 docker-compose 为这 3 个(nginx、jira 和 confluence)容器创建的网络中的正确 IP 地址。

我在评论中建议使用 alias 以便 jira 将 confluence 视为 nginx(nginx 是 confluence 的别名),以便 jira访问 confluence 时始终使用 nginx。

version: '2'

services:
  # HTTPS-ReverseProxy
  nginx:
    image: blacklabelops/nginx
    container_name: nginx
    networks:
      default:
        aliases:
          - 'crucible.example.com'
          - 'confluence.example.com'
          - 'crowd.example.com'
          - 'bitbucket.example.com'
          - 'jira.example.com'
    ports:
      - '443:443'