docker network

一、默认的三种网络模式:

  1. Bridge 模式:这是 Docker 默认创建的网络模式。在 Bridge 模式下,Docker 会为每个容器创建一个虚拟网络接口,并分配独立的 IP 地址。容器之间可以相互通信,而且可以通过端口映射让容器内部的服务可以通过主机的 IP 地址和端口进行访问。

  2. Host 模式:在 Host 模式下,容器与主机共享同一个网络命名空间。容器使用主机的 IP 地址和端口进行网络通信,不会有网络地址转换。这意味着容器与宿主机之间的网络性能更好,但容器之间的网络隔离性较弱。

  3. None 模式:在 None 模式下,容器没有网络接口和网络设置。这意味着容器无法与外部网络通信,只能与同一主机上的其他容器进行通信。这种网络模式通常用于一些不需要网络连接的特殊容器场景。

二、常用基本命令

1、查看网络

docker network ls

2、查看网络源数据

docker network inspect network_name

3、删除网络

docker network rm network_name

三、Bridge模式:

当使用 Docker 网络创建容器时,默认情况下会使用 “bridge” 网络驱动程序,并将容器连接到名为 “bridge” 的默认网络上。“bridge” 模式是 Docker 最常用的网络模式之一,它提供了容器之间的通信和与外部网络的连接。

docker0 是 Docker 在 “bridge” 模式下使用的默认网桥,负责连接宿主机和容器。当你在 Docker 主机上安装 Docker 后,会自动创建一个名为 docker0 的网络接口,作为默认的 Docker 网桥。

docker0 网桥有一个 IP 地址,通常是 172.17.0.1/16,这个地址是网络的网关。当你在同一 Docker 主机上创建一个新的容器时,默认情况下会将容器连接到 docker0 网桥,并自动分配一个 172.17.0.x/16 的 IP 地址。

使用 docker network ls 命令,你可以列出当前可用的 Docker 网络,其中包括 bridge 网络,它是一个单独的 Docker 网络。

总结:docker0 是 Docker 在 “bridge” 模式下默认使用的网桥,连接宿主机和容器,而 bridge 模式则是 Docker 默认的网络模式,允许容器之间通信,我在这理解他就是相当于是一个交换机。

四、自定义网络

一般情况下,自定义网络使用的是桥接模式(bridge mode)

docker network create network_name

五、运行容器并连接到网络

docker run --network=my-net --name=container_name image_name

这将在默认的 “my-net” 网络上创建一个新的容器,并连接到该网络上。

六、【补充】桥接模式下的两两匹配(veth、eth)

在桥接模式下,Docker 使用 veth(虚拟以太网)设备来连接容器。veth 设备是成对出现的虚拟网络接口,一端附加在容器中,另一端附加在宿主机的网桥接口上。

当你在启动容器时,Docker 会创建一个新的 veth 设备对,并将一端分配给容器,另一端则连接到 docker0 网桥接口。

在容器中,veth 接口被命名为 eth0,其中 eth 表示以太网接口编号。容器内的网络栈会将 eth0 视为容器的网络接口,并分配一个IP地址。

例如,假设你创建了一个名为 my-net 的自定义网络,并在该网络上启动了一个名为 container1 的容器。那么容器内部的网络接口 eth0 将通过一个与之对应的 veth 设备与 docker0 网桥接口连接起来。

这种方式使得容器可以通过 eth0 接口与它所连接到的网络进行通信,包括与同一网络上的其他容器以及宿主机的通信。同时,宿主机和外部网络也可以通过 docker0 接口与容器进行通信。

请注意,每个容器的 veth 设备和 eth0 接口是相互独立的,它们在网络中具有不同的MAC地址和IP地址。这样确保了容器之间的隔离,并在网络上提供了多个独立的网络实体。docker network_第1张图片

你可能感兴趣的:(docker,docker,容器,运维)