当你安装了
docker,
它会自动创建
3
个网络,可以使用
docker network ls
命令来查看
bridge
host
当你运行一个容器的时候,可以使用
--network
参数来指定你的容器连接到哪一个网络。
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 run -itd --net=bridge --name cname iname
查看
docker0网桥
ip addr
查看容器网络
ifconfig
![](https://i-blog.csdnimg.cn/blog_migrate/dd532cb19c109a550b334702d8ef3cc0.png)
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 网段 name
删除: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