【问题标题】:Access rules between two Docker networks两个 Docker 网络之间的访问规则
【发布时间】:2016-09-28 09:57:46
【问题描述】:

我想知道网络 A 中的容器如何访问网络 B 中的容器。

两个 Docker 网络都在同一个 Docker 主机上。

我在任何地方都找不到这个答案。 我也尝试使用 iptables 规则但没有成功。

【问题讨论】:

    标签: docker


    【解决方案1】:

    您可以将容器连接到多个网络,但您需要先create 它们,然后连接网络,然后start 它们 - run 命令不允许您指定多个网络。

    示例 - 创建两个网络:

    docker network create net-1
    docker network create net-2
    

    现在创建两个容器,最初将它们连接到不同的网络(此图像只是 ubuntu,安装了 ping 之类的工具):

    > docker create --name ub1 --network net-1 sixeyed/ubuntu-with-utils sleep infinity
    6bdf4f41d8484516e329e572356f1770ba3da5062bf5ab6fc584db294ef13865
    > docker create --name ub2 --network net-2 sixeyed/ubuntu-with-utils sleep infinity
    8424d296104e082e1d0bc1468332b3143459cba9bdeeb21d320709d51048e14d
    

    创建后(它们尚未运行),您可以将它们连接到其他网络:

    > docker network connect net-2 ub1
    > docker network connect net-1 ub2
    

    然后启动它们:

    > docker start ub1
    ub1                                                                                                       
    > docker start ub2
    ub2
    

    现在容器可以通过名称相互访问:

    > docker exec -it ub1 ping -c 1 ub2
    PING ub2 (172.19.0.3) 56(84) bytes of data.
    64 bytes from ub2.net-1 (172.19.0.3): icmp_seq=1 ttl=64 time=0.053 ms
    
    > docker exec -it ub2 ping -c 1 ub1
    PING ub1 (172.19.0.2) 56(84) bytes of data.
    64 bytes from ub1.net-1 (172.19.0.2): icmp_seq=1 ttl=64 time=0.077 ms
    

    您可以对 Compose 执行相同的操作,为服务指定多个网络。

    【讨论】:

    • 是的。 Compose 也让这变得不那么烦人了。
    • 对不起 Elton,我不想将两个网络连接到一个容器,我希望每个容器都有一个网络 (nic),两个容器甚至可以相互通信如果他们在两个不同的地方。
    【解决方案2】:

    如果您需要在同一主机上从一个容器访问另一个容器,这很容易通过在docker run 命令或您的 docker-compose.yml 文件中使用 Docker 的--link 选项来实现。

    它将允许每个容器看到另一个容器并通过其名称引用它(就像您在 /etc/hosts 中添加了一个自定义条目一样)。

    例如:docker run -d --link container1:container1 --name container2 image2:latest

    这将允许您通过容器名称访问容器 2 中的容器 1(例如在容器 2 中运行 ping container1)。

    请参阅 Docker 文档中的 communication-across-links

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多