docker 网络

目录

源生网络

主机网络--network host

 none模式

 自定义网络模式

joined容器通信

跨主机通信

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

docker 网络_第1张图片

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开始

docker 网络_第2张图片

 使用桥接方式连接,网关dockeip

docker 网络_第3张图片

iptables -t nat -nL

docker 网络_第4张图片

 容器通过本机的内核地址伪装可以上网

主机网络--network host

宿主机和容器冲突,用一个ip

docker 网络_第5张图片

 none模式

禁用网络,仅回环

docker 网络_第6张图片

 自定义网络模式

docker network ls
docker network create mynet1
docker network ls

 增加mynet1网段

docker inspect mynet1

docker 网络_第7张图片

 指定网段添加

docker network create --subnet 172.10.0.0/24 --gateway 172.10.0.1 mynet2

docker 网络_第8张图片 mynet2可以指定ip

[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

docker 网络_第9张图片

 解析测试,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

docker 网络_第10张图片

要使它们通信

[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 网络_第11张图片

 删除停掉的容器

docker container prune 

joined容器通信

共用网络栈

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 网络_第12张图片

docker run -it --rm --link demo:web busyboxplus

docker 网络_第13张图片

 访问外网通过内核火墙策略docker 网络_第14张图片

 外网访问内网

端口映射,双容于机志

docker run -d --name demo -p 80:80 nginx

宿主机访问

[root@students72 ~]# curl 172.25.7.7

 docker 网络_第15张图片

 

docker 网络_第16张图片

 docker 网络_第17张图片

 除非火墙策略和proxy进程同时去掉,才不可通信

跨主机通信

网络删除

docker network prune

macvlan方案

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同样,查看混杂模式

docker 网络_第18张图片

 创建网络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

 docker 网络_第19张图片

子接口eh1换eth1.1可以创建新的网段

不同网段信

docker  network connect macvlan ..

 

你可能感兴趣的:(docker,网络,容器)