docker网络
单机通信none网络
none(类似于NAT网络) 安全性,隔离性 none 网络就是什么都没有的网络。挂在这个网络下的容器除了
lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络
我们不禁会问,这样一个封闭的网络有什么用呢? 其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用
none 网络。 比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。
当然大部分容器是需要网络的,我们接着看 host 网络
host(类似仅主机网络),复制啦本地的网卡
连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过
–network=host 指定使用 host 网络 直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host
网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了 Docker
host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨 host
的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables,大家将会在后面进阶技术章节看到
以上介绍都是docker的基本网络几乎在生产环境中用不到,但是必须会
(以上文档是以前看技术大佬的博客总结的,具体是谁忘记了,如有侵犯请联系作者!!)
bridge(类似于桥接网络)
bridge实验室图
先创建一个网卡为docker0的容器(web1)
[root@bogon ~]# docker run -itd --name web1 centos /bin/bash
进入容器查看IP
[root@bogon ~]# docker exec -it web1 /bin/bash
然后exit退出
创建网卡,指定网卡名称为my_net1(自定义网段,并且指定网关)
[root@bogon ~]# docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net1
查看网卡信息
[root@bogon ~]# brctl show
bridge name bridge id STP enabled interfaces
br-502656389f92 8000.024231624cde no
docker0 8000.0242666bcbc9 no
virbr0 8000.525400d5743c yes virbr0-nic
再根据my_net1网卡创建一个test1的容器(不需要指定IP)
[root@bogon ~]# docker run -itd --name test1 --network my_net1 busybox
7006b8232713130deb278c187de957f4505a3946b0e718cb1ca1da595e7c2119
然后在根据my_net1创建一个test2的容器(指定IP:172.22.16.10)
[root@bogon ~]# docker run -itd --name test2 --network my_net1 --ip 172.22.16.10 busybox
d8d7dbb07c0a45e85cfa0b95774b1226a4b6717b534e7fcf96d7dc1d96495c34
进入test2中ping test1和web1
然后pingtest1和web1(查看一下test1和web1的IP)
web1的IP
test1的IP
然后进到test2中ping test1和web1的IP
表示可以ping的同test1,但是ping不同web1因为web1指定的是docker本地网卡
这个时候我们开启路由转发功能,再次ping一下web1的
[root@bogon ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@bogon ~]# sysctl -p
net.ipv4.ip_forward = 1
表示还是ping不同,
这个时候我们添加一把my_test2的网卡添加到web1中,就可以ping同啦
[root@bogon ~]# docker network connect my_net1 web1
进入web1容器中,查看IP
[root@bogon ~]# docker exec -it web1 /bin/bash
最后test2可以ping web1中的eth1表示可以通信
表示欧克
最后查看一下bridge(网卡)的信息