【问题标题】:Docker Container to Host RoutingDocker 容器到主机路由
【发布时间】:2023-03-03 17:02:03
【问题描述】:

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

问题:我必须手动创建一个 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 的两个容器中获得“没有到主机的路由”。因为 docker 网络中的每个容器都没有到 docker 主机本身的路由。

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

这很麻烦,在 Docker 1.11.x 中是否有“新方法”或“更好的方法”来做到这一点?

【问题讨论】:

    标签: networking docker docker-compose


    【解决方案1】:

    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'
    

    【讨论】:

    • 我已经在使用 docker-compose 2。在我的情况下,路由必须是 jira -> nginx (https) -> confluence。如何将多个主机名(例如 jira.example.com、confluence.example.com)附加到我的一个 nginx 容器?
    • @maybeg version2 表示所有容器互相看到:jira 看到 nginx 和 confluence。试试docker exec <jira_id> bash,看看能不能ping通其他两个容器。
    • 我需要通过 nginx 路由,因为每个实例都通过其 https 协议寻址另一个实例。 atlassian 产品使用应用程序链接在 ui 内生成链接。 http 链接将在实例之间工作,是的,它们会 ping 并看到彼此,但在 ui 中生成的 http 链接将无法在浏览器中工作。
    • @maybeg 然后你可以尝试修改 jira 的 /etc/hosts ,其中 confluence 是 nginx/confluence 的别名(以及 nginx 代理传递给 confluence)
    • 很难使用默认的桥接网络,其中 ip 可能会在每次容器重启时发生变化。有什么网络驱动推荐吗?
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多