docker 网络

docker network create --driver bridge --subnet 10.10.1.0/24 --gateway 10.10.1.255 my_net1

 

运行docker容器是指定网络

docker run -it --network=my_net1 --ip 10.10.1.2 busybox

 

 

确实,如果 host 上对每个网络的都有一条路由,同时操作系统上打开了 ip forwarding,host 就成了一个路由器,挂接在不同网桥上的网络就能够相互通信。下面我们来看看 docker host 满不满足这些条件呢?

ip r 查看 host 上的路由表:

# ip r

......

172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1

172.22.16.0/24 dev br-5d863e9f78b6  proto kernel  scope link  src 172.22.16.1

......

172.17.0.0/16 和 172.22.16.0/24 两个网络的路由都定义好了。再看看 ip forwarding:

# sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

ip forwarding 也已经启用了。

    条件都满足,为什么不能通行呢?

    我们还得看看 iptables:

# iptables-save

......

-A DOCKER-ISOLATION -i br-5d863e9f78b6 -o docker0 -j DROP

-A DOCKER-ISOLATION -i docker0 -o br-5d863e9f78b6 -j DROP

......

原因就在这里了:iptables DROP 掉了网桥 docker0 与 br-5d863e9f78b6 之间双向的流量

    从规则的命名 DOCKER-ISOLATION 可知 docker 在设计上就是要隔离不同的 netwrok。

    那么接下来的问题是:怎样才能让 busybox 与 httpd 通信呢?

    答案是:为 httpd 容器添加一块 net_my2 的网卡。这个可以通过docker network connect 命令实现。

    我们在 httpd 容器中查看一下网络配置:

    容器中增加了一个网卡 eth1,分配了 my_net2 的 IP 172.22.16.3。现在 busybox 应该能够访问 httpd 了,验证一下:

busybox 能够 ping 到 httpd,并且可以访问 httpd 的 web 服务。当前网络结构如图所示:

下一节我们讨论容器间通信的三种方式

容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信

 

IP 通信

 

从上一节的例子可以得出这样一个结论:两个容器要能通信,必须要有属于同一个网络的网卡。

 

满足这个条件后,容器就可以通过 IP 交互了。具体做法是在容器创建时通过 --network 指定相应的网络,或者通过 docker network connect 将现有容器加入到指定网络。可参考上一节 httpd 和 busybox 的例子,这里不再赘述。

 

https://www.cnblogs.com/hanxiaohui/p/8550506.html

https://www.cnblogs.com/CloudMan6/p/7077198.html

 

 

 

我们在此网络中启动的容器必须位于同一个Docker主机上。网络中的每个容器都可以立即与网络中的其他容器通信。但是,网络本身是将容器与外部网络隔离开来的。

如下图:

自定义网络-桥接

在用户定义的网桥中,不支持链接。
但是, 可以在此网络中的容器上公开和发布容器端口。

如果要使bridge网络的一部分可用于外部网络,这将是非常有用的方案。具体后面最后点部分会提到。

让外部主机或容器访问自定义网络中的部分容器提供的服务

可以看出,如果要在单个主机上运行相对较小的网络,桥接网络是非常合适的。但是,您可以通过创建 network 来创建更大的 overlay 网络。后面会专门文章讨论。



作者:xiguatian
链接:https://www.jianshu.com/p/a2fa1ca0ec4c
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

posted on 2019-02-25 22:21  yipianchuyun  阅读(118)  评论(0)    收藏  举报

导航