##user-defined网络
除了none、host、bride这三个自动创建的网络,我们也可以根据自己的需求创建user-defined网络
Docker提供三种usr-defined网络驱动:bridge、overlay、macvlan。overlay、macvlan用于跨主机的网络,本文只涉及bridge。
我们可以通过bridge驱动创建类似bridge网络的user-defined网络
docker network create --driver bridge my_net
通过docker network inspect my_net查看配置信息,我们发现Dokcer自动给my_net分配了网关和IP网段。
如果创建网络时指定- -subnet和- -gateway则可以自己指定IP网段
docker network create --driver bridge --subnet 172.12.0.0/24 --gateway 172.12.0.1 my_net2
容器要使用user-defined网络,需要在启动时通过- -network指定
docker run -it --network=my_net2 ubuntu
容器的IP将会是Docker从my_net2的subnet中自动分配的,如果需要容器指定一个静态IP,通过- – ip指定
docker run -it --network=my_net2 --ip 172.12.0.10 ubuntu
注:只有使用- -subnet创建的网络才能指定静态IP,否则报错!
##my_net2和默认的bridge网络可以通信吗?
如果在host上添加路由可以通信么?答案是不能,iptables会DROP掉docker0和my_net2所在的虚拟网卡之间双向的流量,因为docker设计上就是隔离不同的network的
如果想要让默认bridge网络和my_net2上的容器通信则需要通过添加网卡解决,给默认bridge网络的容器田间一块my_net2的网卡
docker network connect my_net [容器ID]
通过ip a或者ifconfig 查看容器网络配置,其中会增加一块网卡,并且从my_net2中获取一个IP地址,我们可以通过这个IP与原来在my_net2上名为ubuntu的容器通信。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)