Docker 网络详解

Docker 网络架构、网络驱动类型和网络配置


📋 目录


网络驱动类型

内置驱动

  • bridge:默认网络驱动,用于单主机
  • host:直接使用宿主机网络
  • none:禁用网络
  • overlay:用于多主机网络(Swarm)
  • macvlan:为容器分配 MAC 地址

Bridge 网络

默认 Bridge 网络

# 查看默认 bridge 网络
docker network inspect bridge

创建自定义 Bridge 网络

# 创建 bridge 网络
docker network create my-bridge
 
# 创建网络并指定子网
docker network create --subnet=172.20.0.0/16 my-bridge
 
# 创建网络并指定网关
docker network create \
  --subnet=172.20.0.0/16 \
  --gateway=172.20.0.1 \
  my-bridge

使用 Bridge 网络

# 运行容器时指定网络
docker run -d --network my-bridge nginx:latest
 
# 将运行中的容器连接到网络
docker network connect my-bridge my-container

Host 网络

使用 Host 网络

# 使用 host 网络
docker run -d --network host nginx:latest

特点

  • 容器直接使用宿主机网络
  • 性能最好
  • 端口映射无效
  • 安全性较低

Overlay 网络

创建 Overlay 网络

# 初始化 Swarm
docker swarm init
 
# 创建 overlay 网络
docker network create --driver overlay my-overlay

使用 Overlay 网络

# 在 Swarm 服务中使用
docker service create --network my-overlay nginx:latest

Macvlan 网络

创建 Macvlan 网络

# 创建 macvlan 网络
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 \
  my-macvlan

使用 Macvlan 网络

# 使用 macvlan 网络
docker run -d --network my-macvlan --ip=192.168.1.100 nginx:latest

自定义网络

网络配置选项

# 创建自定义网络
docker network create \
  --driver bridge \
  --subnet=172.20.0.0/16 \
  --gateway=172.20.0.1 \
  --ip-range=172.20.240.0/20 \
  my-network

网络管理

# 列出所有网络
docker network ls
 
# 查看网络详细信息
docker network inspect my-network
 
# 删除网络
docker network rm my-network
 
# 删除所有未使用的网络
docker network prune

网络插件

使用网络插件

# 安装网络插件
docker plugin install plugin-name
 
# 使用插件创建网络
docker network create --driver plugin-name my-network

📚 参考资源


相关笔记