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 应用链接:
- Jira 通过 https://confluence.example.com
访问 Confluence
- Confluence 通过 https://jira.example.com
访问 Jira
我使用 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.com
和 confluence.example.com
(参见 docker-compose.yml
hostname directive),nginx 可以直接代理传递给 jira.example.com
和confluence.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'
我需要一个更好的最新解决方案来解决以下问题:
问题:我必须手动创建一个 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 访问 Confluence
- Confluence 通过 https://jira.example.com 访问 Jira
我使用 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.com
和 confluence.example.com
(参见 docker-compose.yml
hostname directive),nginx 可以直接代理传递给 jira.example.com
和confluence.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'