bridge模式
当
Docker
进程启动时,会在主机上创建一个名为
docker0
的虚拟网桥,此主机上启动的
Docker
容器会连
接到这个虚拟网桥上。
虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从
docker0
子网中分配一个
IP
给容器使用,并设置
docker0
的
IP
地址为容器的默认网关。
在主机上创建一对虚拟网卡
veth pair
设备,
Docker
将
veth pair
设备的一端放在新创建的容器中,并命名
为
eth0
(容器的网卡),另一端放在主机中,以
vethxxx
这样类似的名字命名,并将这个网络设备加入
到
docker0
网桥中。
bridge
模式是
docker
的默认网络模式,不写
--net
参数,就是
bridge
模式。
查看bridge信息
docker inspect bridge
构建容器
docker build -t spring:1.0 .
打开容器
docker run -itd --net=bridge --name cname iname
查看docker0网桥
查看容器网络
ip addr
ifconfig
docker0就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相ping通。
外部访问
设置端口映射
docker run -itd --name bridge03 -p 8081:8080 spring:1.0
-p
参数可以出现多次,绑定多个端口号
docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0
host模式
如果启动容器的时候使用
host
模式,那么这个容器将不会获得一个独立的
Network Namespace
,而是
和宿主机共用一个
Network Namespace
。
容器将不会虚拟出自己的网卡,配置自己的
IP
等,而是使用宿主机的
IP
和端口。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
docker run -itd --name host01 --net=host spring:1.0
创建自定义网络(自定义IP)
docker network create --subnet 127.18.0.0/16 mynet
docker network rm xx
固定ip启动
docker run -itd --name net01 --net mynet --ip 172.18.0.2 spring:1.0
测试
docker exec -it net01 ping net02
跨网桥测试
docker exec -it net01 ping 172.0.0.2