docker自带的网络模式有bridge,none,host,container4种,
docker network ls #查看docker网络
一、bridge模式
docker的默认模式,docker进程第一次启动会创建一个docker0虚拟网桥,此宿主机上启动的容器会默认连接到这个网桥上,容器通过这块网桥NAT访问外部网络,当执行docker run 加入-p参数是,实际是在iptables中加入了对应的DNAT端口转发规则。
创建容器,使用默认网络:
docker run -d --name net_a -h net_a -p 80:80 centos /usr/sbin/init
创建自定义bridge网络:
docker network create -d bridge --subnet=172.16.0.0/24 --gateway=172.16.0.1 bridge_name
docker run -d --name net_b -h net_b --net bridge_name --ip 172.16.0.8 centos /usr/sbin/init
将现有容器连接到新建网络:
docker network connect --ip 172.16.0.9 bridge_name net_a
二、host模式
host模式的容器跟宿主机共用一个namespace,拥有一样的IP和路由,因此容器内的服务端口不能跟宿主机相同
docker run -d --net host --name net_d -h net_d centos /usr/sbin/init
三、none模式
none模式创建的容器没有添加网卡,需要自行配置
docker run -d --net none --name net_d -h net_d centos /usr/sbin/init
四、container模式
container模式创建一个跟指定容器共用网络的新容器
docker run -it --net=container:net_a --name=net_e centos /bin/bash