目录
源生网络
主机网络--network host
none模式
自定义网络模式
joined容器通信
--link
跨主机通信
macvlan方案
启用docker 会生成docker0默认172.17.0.1
[root@vm3 docker]# docker network ls
NETWORK ID NAME DRIVER SCOPE
298b9550550f bridge bridge local
d83dadc0e786 host host local
967709b5ced7 none null local
yum install -y bridge-utils.x86_64
[root@vm3 docker]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.024289b13e4f no
启用服务
docker run -d --name demo nginx
docker inspect demo
查看服务获得一个ip,每个服务获得一个,单增从2开始
使用桥接方式连接,网关dockeip
iptables -t nat -nL
容器通过本机的内核地址伪装可以上网
宿主机和容器冲突,用一个ip
禁用网络,仅回环
docker network ls
docker network create mynet1
docker network ls
增加mynet1网段
docker inspect mynet1
指定网段添加
docker network create --subnet 172.10.0.0/24 --gateway 172.10.0.1 mynet2
[root@vm3 docker]# docker run -d --name demo1 --network mynet1 --ip 172.18.0.100 nginx
fdca683f5561749927013c27526dc8512749372a0cedcfc4dc781b4cdeba8a59
docker: Error response from daemon: user specified IP address is supported only when connecting to networks with user configured subnets.
[root@vm3 docker]# docker run -d --name demo2 --network mynet2 --ip 172.10.0.100 nginx
1a5826f25fa9085105733d0301360abafba446488e8fa83f6264ebf15b0c0c7e
docker inspect demo2
解析测试,mynet1和mynet2隔离
[root@vm3 docker]# docker rm -f demo1
demo1
[root@vm3 docker]# docker run -d --name demo1 --network mynet1 nginx
483f84879041656a8d371b8b2d43cfd0fdd9f593dd36232f9ff3488935e36db7
docker run -it --rm --network mynet1 busybox
分别ping demo1和demo2
docker run -it --rm --network mynet2 busybox
分别ping demo1和demo2
要使它们通信
[root@vm3 docker]# docker run -it --name demo3 --network mynet1 busybox
打入后台
[root@vm3 docker]# docker network
connect create disconnect inspect ls prune rm
[root@vm3 docker]# docker network connect
bridge host mynet1 mynet2 none
[root@vm3 docker]# docker network connect mynet2 demo3
[root@vm3 docker]# docker attach demo3
就是增加了一个网卡
删除停掉的容器
docker container prune
共用网络栈
docker run -d -name demo nginx
docker pull radial/busyboxplus
docker tag radial/busyboxplus busyboxplus
docker rmi radial/busyboxplus
docker run -it --rm --network container:demo busyboxplus
docker run -it --rm --link demo:web busyboxplus
外网访问内网
端口映射,双容于机志
docker run -d --name demo -p 80:80 nginx
宿主机访问
[root@students72 ~]# curl 172.25.7.7
除非火墙策略和proxy进程同时去掉,才不可通信
网络删除
docker network prune
Linux内核提供的虚拟网卡技术
底层通信网卡
增加网卡
[root@vm2 harbor]# cd /etc/sysconfig/network-scripts/
[root@vm2 network-scripts]# ls
ifcfg-eth0 ifdown-eth ifdown-post ifdown-Team ifup-aliases ifup-ipv6 ifup-post ifup-Team init.ipv6-global
ifcfg-lo ifdown-ippp ifdown-ppp ifdown-TeamPort ifup-bnep ifup-isdn ifup-ppp ifup-TeamPort network-functions
ifdown ifdown-ipv6 ifdown-routes ifdown-tunnel ifup-eth ifup-plip ifup-routes ifup-tunnel network-functions-ipv6
ifdown-bnep ifdown-isdn ifdown-sit ifup ifup-ippp ifup-plusb ifup-sit ifup-wireless
[root@vm2 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@vm2 network-scripts]# vim ifcfg-eth1
[root@vm2 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
NAME=eth1
ONBOOT=yes
BOOTPROTO=none
[root@vm2 network-scripts]# ifup eth1
打开混杂模式
[root@vm2 network-scripts]# ip link set eth1 promisc on
vm3同样,查看混杂模式
创建网络macvlan
两台机器
docker network create -d macvlan --subnet 10.20.0.0/24 --gateway 10.20.0.1 -o parent=eth1 macvlan1
测试
分别指定Ip
docker run -it --rm --network macvlan1 --ip 10.20.0.11 busybox
docker run -it --rm --network macvlan1 --ip 10.20.0.10 busybox
子接口eh1换eth1.1可以创建新的网段
不同网段信
docker network connect macvlan ..