docker (三) 网络

docker (三)  网络

 

查看所有的Docker网络

docker network ls

1、Bridge 模式(默认)

工作原理:

  • Docker 守护进程启动时会创建一个虚拟网桥 docker0(默认 IP 段 172.17.0.0/16)。

  • 每个使用 bridge 模式的容器会获得一个独立的网络命名空间,并通过 veth pair 连接到 docker0 网桥。每启动一个Docker就从 docker0 网桥的 IP 段(如 172.17.0.0/16)中取出一个未使用的 IP(如 172.17.0.2),分配给容器的 eth0

  • 容器之间通过 docker0 进行通信,容器与外部网络通信需要经过 NAT(通过宿主机 IP 转发)。

特点

  • 隔离性好:每个容器拥有独立的 IP、端口空间。

  • 默认模式:docker run 不指定 --network 时默认使用 bridge。

  • 需要端口映射:外部访问容器服务必须通过 -p 或 -P 将宿主机端口映射到容器端口。

查看宿主机网络情况:

每运行一个 docker 容器都会生成一个 veth 设备对,这个 veth 一个接口在容器里,一个接口在物理机上,这样访问宿主机的IP和端口时,就能转发到容器中。

 

 所有的容器不指定网络的情况下,都是用docker0  路由的,docker会给我们的容器默认分配一个可用的IP

 

2、 Host 模式
工作原理

  • 容器不获得独立的网络命名空间,而是直接使用宿主机的网络栈。
  • 容器的 IP 和端口就是宿主机的 IP 和端口(共享网络命名空间)。

特点

  • 性能最高:没有 NAT 和 veth pair 开销,网络延迟低。

  • 端口冲突:容器内绑定的端口会直接占用宿主机端口,同一端口只能启动一个容器。

  • 隔离性弱:容器可以看到宿主机的所有网络接口,甚至能修改宿主机网络配置(需要特权)。

3、None 模式

工作原理

  • 容器拥有独立的网络命名空间,但没有任何网络配置(无网卡、无 IP、无路由)。

  • 只有 loopback 接口(127.0.0.1)。

特点:完全隔离:无法与外部通信,只能容器内部进程间通信。

4、Container 模式(共享网络栈)

工作原理

  • 新容器与一个已存在的容器共享网络命名空间,即它们使用相同的 IP、端口空间和网络接口。

  • 除了网络,其他资源(文件系统、PID、UTS)仍然隔离。

特点

  • 紧密耦合:两个容器可以通过 localhost 直接通信(如 sidecar 模式)。

  • 端口共享:不能绑定相同的端口,因为网络栈是共享的。

  • 生命周期:如果被共享的容器重启或删除,共享容器的网络也会受影响。

 

 

posted @ 2020-12-13 14:00  邓维-java  阅读(127)  评论(0)    收藏  举报