码迷,mamicode.com
首页 > 其他好文 > 详细

docker学习-bridge网络

时间:2019-09-13 20:23:18      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:info   image   不同   活性   ip地址   类型   设备   网线   creat   

Docker提供几种原生网络,从覆盖范围可以分为单个host上的容器网络和跨多个host的网络。
Doker在安装的时候会自动在host上创建三个网络,使用如下命令查看

docker network ls

技术图片

none 网络

故名思议,none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。
该网络一般应用到一些对安全性要求高并且不需要联网的应用,比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取

host 网络

连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过 --network=host 指定使用 host 网络。

在容器中可以看到 host 的所有网卡,并且连 hostname 也是 host 的。host 网络的使用场景如下:

直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。

Docker host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨 host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables。

brige网络操作

brige网络是应用最广泛的网络类型。
Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。

brctl show

技术图片

当前docker0上没有任何其他网络设备

创建一个名为net1的Bridge网络

docker network create net1

技术图片
查看net网桥,subnet已经自动配置为

docker network inspect net1

技术图片

创建一个名为net2的bridge网桥,指定subnet=172.10.10.0/24

docker network create --driver bridage --subnet 172.10.10.0/24 --gateway 172.10.10.1 net2

技术图片

启动名为centos1的容器,并加入net1网络

docker run --name centos1 -dit --network=net1 centos

技术图片
启动名为centos2的容器,并加入net2网络
技术图片
启动名为centos3的容器,并加入net2网络,同时指定该容器IP=172.10.10.10
docker run --name centos3 -dit --network=net2 --ip 172.10.10.10 centos
技术图片

分别查看3个centos容器的IP地址信息。其中cnetos2和centos3位于同一网段,centos1与前两者位于不同网段
docker inspect centos1
技术图片
docker inspect centos2
技术图片
docker inspect centos3
技术图片

以下面这张图来理解bridge网络
技术图片
容器主要是通过veth pair连接到 brigde网络,它是一对成对出现的特殊网络设备,简单可以理解为由一根虚拟网线连接起来的一堆网卡,网卡的一头(如eth@if34)在容器中,另外一头(如veth28c57df)挂在网桥docker0上

docker学习-bridge网络

标签:info   image   不同   活性   ip地址   类型   设备   网线   creat   

原文地址:https://blog.51cto.com/11555417/2437888

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!