Docker Network 命令详解:构建容器间通信的桥梁

简介: 本文深入解析Docker网络命令,涵盖基础网络类型与核心操作。从查看、创建、连接到清理网络,结合实用示例,助你掌握容器间通信管理,提升微服务架构下的网络配置与排障能力。

在现代微服务架构中,容器间的网络通信是至关重要的一环。Docker 提供了强大的网络功能,而 docker network 命令则是管理这些网络功能的核心工具。无论你是 Docker 新手还是经验丰富的开发者,深入理解 Docker 网络命令都将极大地提升你的容器管理能力。

Docker 网络基础

在深入了解具体命令之前,让我们先快速回顾一下 Docker 的网络基础。Docker 支持多种网络驱动:

  • bridge:默认网络驱动,适用于独立容器间通信
  • host:移除容器与 Docker 主机间的网络隔离
  • overlay:连接多个 Docker 守护进程,实现 Swarm 服务间通信
  • macvlan:为容器分配 MAC 地址,使其在物理网络中显示为物理设备
  • none:禁用所有网络

Docker Network 命令详解

1. 查看网络列表

docker network ls

这是最基础的命令,用于查看所有可用的 Docker 网络:

$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
aabbccddeeff   bridge    bridge    local
ffeeddccbbaa   host      host      local
112233445566   none      null      local

常用选项:

  • -q, --quiet:只显示网络 ID
  • --no-trunc:不截断输出
  • -f, --filter:根据条件过滤
# 只显示网络ID
docker network ls -q

# 显示完整信息
docker network ls --no-trunc

# 过滤驱动类型为bridge的网络
docker network ls --filter driver=bridge

2. 创建网络

docker network create

创建自定义网络是实现复杂容器通信的第一步:

# 创建基础网络
docker network create my-network

# 创建带子网的自定义网络
docker network create \
  --driver bridge \
  --subnet 172.20.0.0/16 \
  --gateway 172.20.0.1 \
  my-custom-network

# 创建带IPAM配置的网络
docker network create \
  --ipam-driver default \
  --ipam-opt subnet=192.168.100.0/24 \
  --ipam-opt gateway=192.168.100.1 \
  my-ipam-network

常用选项:

  • -d, --driver:指定网络驱动(默认:bridge)
  • --subnet:指定子网 CIDR
  • --gateway:指定网关 IP
  • --ip-range:指定容器 IP 范围
  • --label:为网络添加元数据

3. 查看网络详情

docker network inspect

深入了解网络的配置和连接状态:

# 查看单个网络详情
docker network inspect my-network

# 查看多个网络详情
docker network inspect network1 network2

# 格式化输出(只显示网络名称和驱动)
docker network inspect --format='{
   {.Name}}: {
   {.Driver}}' my-network

示例输出:

[
    {
   
        "Name": "my-network",
        "Id": "aabbccddeeff...",
        "Created": "2023-10-01T10:00:00Z",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
   
            "Driver": "default",
            "Config": [
                {
   
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Containers": {
   
            "container1": {
   
                "Name": "web-app",
                "EndpointID": "...",
                "MacAddress": "02:42:ac:14:00:02",
                "IPv4Address": "172.20.0.2/16"
            }
        }
    }
]

4. 连接容器到网络

docker network connect

将运行中或已停止的容器连接到指定网络:

# 连接运行中的容器
docker network connect my-network my-container

# 连接时指定IP地址
docker network connect --ip 172.20.0.100 my-network my-container

# 连接时指定别名
docker network connect --alias db --alias database my-network my-container

常用选项:

  • --ip:指定 IPv4 地址
  • --ip6:指定 IPv6 地址
  • --alias:为容器添加网络别名
  • --link:连接到另一个容器

5. 断开容器与网络的连接

docker network disconnect

从网络中移除容器:

# 强制断开连接(即使容器正在运行)
docker network disconnect -f my-network my-container

# 普通断开连接
docker network disconnect my-network my-container

6. 删除网络

docker network rm

删除不再需要的网络:

# 删除单个网络
docker network rm my-network

# 删除多个网络
docker network rm network1 network2 network3

# 强制删除(即使有容器连接)
docker network rm -f my-network

7. 清理未使用的网络

docker network prune

清理所有未被容器使用的网络:

# 交互式清理
docker network prune

# 强制清理(无需确认)
docker network prune -f

# 清理时包含指定标签的网络
docker network prune --filter "label=project=test"

常用选项:

  • -f, --force:跳过确认提示
  • --filter:根据条件过滤

总结

Docker network 命令是容器网络管理的核心工具,掌握这些命令能够帮助你:

  • 构建复杂的多容器应用架构
  • 实现容器间的安全通信
  • 优化网络性能和可靠性
  • 快速排查网络问题

通过本文的详细介绍和实战示例,相信你已经对 Docker network 命令有了全面的了解。

目录
相关文章
|
5月前
|
存储 JSON JavaScript
SimpleMindMap:一个强大的Web思维导图
在信息爆炸的时代,思维导图成为高效组织、记忆与表达复杂信息的关键技能。SimpleMindMap 是一个开源、强大的 Web 思维导图工具,支持多种图表结构、丰富的节点内容及自定义功能,提供在线使用与私有化部署选项,助力提升学习与工作效率。
390 0
|
Linux 虚拟化
VMware安装Linux虚拟机之NAT模式网络配置图文详解
VMware安装Linux虚拟机之NAT模式网络配置图文详解
890 0
|
5月前
|
开发工具 git
解决git push时的错误提示:“error: src refspec master does not match any”
8 .如果确认以上都无误但依然出现该提示,则可能需要重新设置跟踪上游(upstream),通过如下命令:
2678 8
|
8月前
|
网络协议 NoSQL Redis
Docker Compose--模板文件
Docker Compose--模板文件
717 29
|
9月前
|
Kubernetes 安全 应用服务中间件
IngressNightmare:Ingress Nginx 再曝5个安全漏洞,可接管你的 K8s 集群
是否还记得 2022 年 K8s Ingress Nginx 披露了的 3 个高危安全漏洞(CVE-2021-25745, CVE-2021-25746, CVE-2021-25748),并在那一年宣布停止接收新功能 PR,专注修复并提升稳定性。
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
9637 12
|
消息中间件 负载均衡 算法
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
3178 2
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
31855 0
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
916 6
|
网络协议 Linux 网络安全
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
3313 0