【Docker】Docker高级网络(NetWork)

【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 网络

注意:

  • 默认 docker 在创建容器时将所有容器都连接到 docker0 网桥上,默认在 docker0 网桥的容器都可以使用容器内ip地址进行通信。
  • 容器间还可以使用容器容器名称作为容器ip进行通信,前提是必须使用自定义的网桥,不能使用默认的 docker0

2. 网络

2.1 网桥类型

docker中网桥有四种类型:

  1. **Bridge **:桥接式网络模式 (默认)
  2. Host:开放式网络模式,和宿主机共享网络
  3. Container:联合挂载式网络模式,和其他容器共享网络
  4. None:封闭式网络模式,不为容器配置网络

2.2 创建网络自定义桥

首先查看有关于网络的docker命令参数:

docker network --help

image-20230714165330498

查看创建网桥的命令行参数:

docker network create --help

image-20230714165413184

参数含义:

  • -d:指定网桥类型,默认是 bridge

创建一个名为 test 的网桥:

docker network create -d bridge test

image-20230714165724990


2.3 查看所有网络

docker network ls

image-20230714165928694


2.4 查看特定网络的细节

查看名为 heima 的网络细节:

docker network inspect heima 
image-20230714170129217

2.5 删除特定网络

删除名为 test 的网络:

docker network rm test

删除完毕,查看该网络是否还存在,发现确实已经删除。如图所示:

image-20230714170326015


2.6 多个容器使用指定网络

1)启动容器时明确指定容器使用哪个网络名

docker run -d --network 网络名 ...

2)启动之后把容器加入到某个网络

docker network connect 网络名 容器id(name)

猜你喜欢

转载自blog.csdn.net/Decade_Faiz/article/details/131728528