玖叶教程网

前端编程开发入门

docker 网络实践

#docker 网络模式

环境 centos7.4 , Docker version 17.12.0-ce

docker自带网络类型 bridge,host,none,container,overlay,macvlan

#本地网络

bridge # --net=bridge 默认模式,NAT转发

host # --net=host 使用宿主机网络

container # --net=container:容器名或ID ,共用其它容器网络

none # --net=none 无网卡

#跨主机网络

overlay #vxlan模式

macvlan #使用外部lan,需手动配置

#可以使用其它网络插件

#查看docker网络

docker network ls

#docker修改本地默认网段

#docker启动默认创建docker0网桥172.17网段

#添加自定义网段

SetOPTS=" --bip=192.168.55.1/24"

sed -i "s#^ExecStart.*#& $SetOPTS #" /usr/lib/systemd/system/docker.service

grep 'ExecStart' /usr/lib/systemd/system/docker.service

#重启docker

systemctl daemon-reload

systemctl restart docker

ifconfig docker0 |egrep 'inet |flags' #查看docker0网桥ip已改

#可使用自定义网桥,创建br0,修改配置 -b=br0

#docker本地网络实践

#不指定网络,使用默认bridge

docker run -dit --name busybox1 busybox

docker exec -it busybox1 ifconfig #查看网络

#host网络

docker run -dit --name busybox-host --net=host busybox

docker exec -it busybox-host ifconfig #查看网络,与宿主机一样

#container网络

docker run -dit --name busybox2 --net=container:busybox1 busybox #使用busybox1网络

docker exec -it busybox1 ifconfig #查看网络

#none没网络

docker run -dit --name busybox-none --net=none busybox

docker exec -it busybox-none ifconfig

#创建本地网络mynet1(自定义网络能设置固定ip)

docker network create --subnet 192.168.58.0/24 --gateway 192.168.58.1 mynet1

docker run -dit --name busybox3 --network mynet1 --ip=192.168.58.18 busybox

docker exec busybox3 ifconfig |egrep 'inet|flags' #查看容器网络

#docker 容器 添加网卡

docker network connect mynet1 --ip 192.168.58.8 busybox1 #给容器添ip

docker exec $(docker ps -l -q) ifconfig |egrep 'inet|flags' #查看网络

docker network disconnect mynet1 busybox1 #断开网络,再次查看网络……

#删除测试容器、网络

docker rm -f busybox1 busybox2 busybox3 busybox-host busybox-none

docker network rm mynet1

#docker跨主机通信

#overlay网络

本次在docker swarm集群操作

创建docker swarm 集群参考http://www.cnblogs.com/elvi/p/8424378.html

docker swarm集群创建容器,会自动创建overlay网络ingress

docker network ls #查看网络

#创建overlay类型网络mynet2,并设置网段、网关

docker network create -d overlay --subnet 192.168.59.0/24 --gateway 192.168.59.1 mynet2

docker network inspect mynet2 #查看网络参数

#swarm集群使用自定义网段mynet2

docker service create --name nginx2 --replicas 2 \

-p 81:80 --network mynet2 hub.test.com:5000/almi/nginx:0.1

#hub.test.com:5000/almi/nginx:0.1 为内网私有仓库镜像

docker service ls

#swarm集群创建容器默认2个网卡,增加了自定义网卡

docker exec $(docker ps -l -q) ifconfig |egrep 'inet|flags' #查看网络

#删除测试

docker service rm nginx2

docker network rm mynet2

docker network prune #删除未使用的网卡

# macvlan网络

#宿主机开启网卡混杂模式

ip link set eth0 promisc on

ifconfig eth0 |egrep 'inet |flags'

#创建macvlan模式网络macnet

docker network create -d macvlan -o parent=eth0 macnet \

--subnet 172.16.50.0/24 --gateway 172.16.50.1

#创建容器

docker run -d --name nginx3 --net macnet hub.test.com:5000/almi/nginx:0.1

docker exec nginx3 ping -c 4 nginx3 #测试获取ip成功

#其它docker节点创建网络、容器,然后ping测试

#删除测试

docker rm -f $(docker ps -l)

docker network rm macnet

本次macvlan测试环境为虚拟机,获取外部vlan失败

宿主机配置vlan网络+macvlan模式,实现docker vlan网络

使用macvlan,无法与宿主机通信

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言