【Docker】Docker高级网络(NetWork)
文章目录
参考文档:高级网络配置 · 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)










