Files
nexus/wiki/entities/Docker-Network.md
2026-04-22 08:02:59 +08:00

2.6 KiB
Raw Blame History

title, tags, date
title tags date
Docker Network
docker
networking
container
2026-04-22

Docker Network

Definition

Docker Network 是 Docker 提供的容器网络连接机制支持多种网络驱动bridge / host / overlay / macvlan / none使容器能够相互通信并与外部网络交互。

Network Drivers

驱动 用途 特点
bridge 默认网络驱动 容器通过虚拟网桥通信,默认 bridge IP 为 172.17.0.1
host 移除网络隔离 容器直接使用宿主机网络栈
overlay Docker Swarm 多主机通信 跨多个 Docker daemon
macvlan 给容器分配真实 MAC 容器像物理机一样出现在网络中

查看与管理命令

# 查看所有网络
docker network ls

# 查看特定网络的详细信息驱动、容器、IP
docker network inspect bridge

# 查看连接了某网络的容器
docker network inspect <network_name> --format '{{range .Containers}}{{.Name}} {{end}}'

# 创建自定义 bridge 网络
docker network create --driver bridge my_network

# 删除网络
docker network rm my_network

# 删除前先断开容器连接
docker network disconnect my_network container_name

Docker Compose 中的 Network

services:
  app:
    networks:
      - frontend
      - backend

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

Compose 项目间命名冲突

Docker Compose 默认以项目目录名作为网络名前缀:

  • 项目 A目录 ~/portainer)→ 网络名 portainer_default
  • 项目 B目录 ~/portainer-stack)→ 网络名 portainer-stack_default

当两个项目名不同但都声明了 portainer_network 时,会产生警告:

WARN: Network portainer_network declared as external, but it does not exist

解决方案

  1. 删除旧网络:docker network rm portainer_network
  2. 或在 compose 中声明 external: true 复用已存在的网络

External Mode复用外部网络

networks:
  portainer_network:
    external: true

声明 external: trueCompose 不会尝试创建网络,而是直接使用已存在的同名网络。

  • Portainer — Docker 可视化管理工具,提供网络管理 Web UI
  • 群晖 NAS — Docker 网络配置的平台
  • Docker — 网络系统的底层平台

See Also