zoukankan      html  css  js  c++  java
  • Docker系列(四):容器之间的网络通信

    首先我们需要知道:两个容器要能通信,必须要有属于同一个网络的网卡。

    先来看下正常情况下我们的容器默认是否是能通信的,这里运行两个测试容器:

    docker run -it --name=bbox1 busybox

    docker run -it --name=bbox2 busybox

    然后我们进入bbox2容器中,并ping容器bbox1:

    可以发现无法ping通,这是因为容器默认的隔离原因导致的。

    从 Docker 1.10 版本开始,docker daemon 实现了一个内嵌的 DNS server,使容器可以直接通过“容器名”通信。方法很简单,只要在启动时用 --name 为容器命名就可以了。

    首先我们需要创建一个bridge类型的网桥:docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2  

    创建的同时为这个网桥指定了IP段,当然也可以不指定。

    创建完成后可以通过 docker network ls查看:

    然后我们重新运行前面的两个容器,并为他们指定netwoek:

    docker run -it --network=my_net2 --name=bbox1 busybox

    docker run -it --network=my_net2 --name=bbox2 busybox

    然后在bbox2容器中ping容器bbox1:

    使用 docker DNS 有个限制:只能在 user-defined 网络中使用。也就是说,默认的 bridge 网络是无法使用 DNS 的,这个我们在开始的时候就已经验证过了。

    好了,大功告成!

  • 相关阅读:
    TC Asia Competition
    Codeforces 258 Div2
    斯坦纳树
    <算法竞赛入门经典> 第8章 贪心+递归+分治总结
    UVALive 6602 Counting Lattice Squares
    UVALive 6609 Minimal Subarray Length (查找+构建排序数组)
    vue中路由以及动态路由跳转
    sublime安装
    js数组转对象
    如何将变量做为一个对象的key,push进一个数组?
  • 原文地址:https://www.cnblogs.com/weiBlog/p/10050157.html
Copyright © 2011-2022 走看看