【Docker】Docker高级网络(NetWork)
文章目录
- 【Docker】Docker高级网络(NetWork)
- 1. 概述
- 2. 网络
- 2.1 网桥类型
- 2.2 创建网络自定义桥
- 2.3 查看所有网络
- 2.4 查看特定网络的细节
- 2.5 删除特定网络
- 2.6 多个容器使用指定网络
参考文档:高级网络配置 · Docker – 从入门到实践 (docker-practice.github.io)
1. 概述
当 Docker 启动时,会自动在主机上创建一个 docker0
虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0
接口。比如典型的 172.17.42.1
,掩码为 255.255.0.0
。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16
)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 veth pair
接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0
;另一端在本地并被挂载到 docker0
网桥,名称以 veth
开头(例如 vethAQI2QT
)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
注意:
- 默认 docker 在创建容器时将所有容器都连接到
docker0
网桥上,默认在docker0
网桥的容器都可以使用容器内ip地址进行通信。 - 容器间还可以使用容器容器名称作为容器ip进行通信,前提是必须使用自定义的网桥,不能使用默认的
docker0
2. 网络
2.1 网桥类型
docker中网桥有四种类型:
- **Bridge **:桥接式网络模式 (默认)
- Host:开放式网络模式,和宿主机共享网络
- Container:联合挂载式网络模式,和其他容器共享网络
- None:封闭式网络模式,不为容器配置网络
2.2 创建网络自定义桥
首先查看有关于网络的docker命令参数:
docker network --help
查看创建网桥的命令行参数:
docker network create --help
参数含义:
- -d:指定网桥类型,默认是
bridge
创建一个名为 test
的网桥:
docker network create -d bridge test
2.3 查看所有网络
docker network ls
2.4 查看特定网络的细节
查看名为 heima
的网络细节:
docker network inspect heima
2.5 删除特定网络
删除名为 test
的网络:
docker network rm test
删除完毕,查看该网络是否还存在,发现确实已经删除。如图所示:
2.6 多个容器使用指定网络
1)启动容器时明确指定容器使用哪个网络名
docker run -d --network 网络名 ...
2)启动之后把容器加入到某个网络
docker network connect 网络名 容器id(name)