Docker容器到主机路由



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

问题:我必须手动创建一个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应用程序链接:

  • Jira通过https://confluence.example.com
  • 汇流通过Jirahttps://jira.example.com

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

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

这很麻烦,Docker 1.11.x中有"新方法"或"更好的方法"吗?

docker compose版本2确实创建了一个网络,允许所有容器相互查看。参见"组合中的网络"(自docker 1.10起)

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

我在评论中建议使用别名,以便jira将convergence视为nginx(nginx是convergence的别名),从而使jira在访问convergence时始终使用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'

最新更新