Docker 网络命令

发布: (2026年1月2日 GMT+8 20:08)
8 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将按照要求保留源链接、格式和技术术语,仅翻译正文部分。

Docker network 命令概览

docker network 命令用于管理 Docker 网络。它可以 创建检查列出连接断开删除 网络。

1. 列出网络

docker network ls

示例输出

NETWORK IDNAMEDRIVERSCOPE
abcdef123456bridgebridgelocal
ghijkl789012hosthostlocal
mnopqr345678my-networkbridgelocal
stuvwx901234my-overlay-netoverlayswarm

说明

描述
NETWORK ID每个网络的唯一标识符
NAME网络名称
DRIVER驱动类型(例如 bridgeoverlayhost
SCOPElocal – 仅在当前主机上;global – 跨 Swarm

2. 检查网络

docker network inspect <name-or-id>

<name-or-id> 替换为实际的名称或 ID。

示例

docker network inspect my-network

示例 JSON 输出(为简洁起见已截断)

[
    {
        "Name": "my-network",
        "Id": "abcdef1234567890",
        "Created": "2022-01-01T12:00:00Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "container1": {
                "Name": "container1",
                "EndpointID": "xyz123456789",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "container2": {
                "Name": "container2",
                "EndpointID": "abc987654321",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

检查结果提供了创建时间、驱动、IPAM 配置、已连接容器等详细信息——对排障和了解网络设置非常有帮助。

3. 创建网络

简单创建(默认 bridge 驱动)

docker network create my-network

使用选项的自定义创建

docker network create \
  --driver bridge \
  --subnet 172.18.0.0/16 \
  --gateway 172.18.0.1 \
  --ip-range 172.18.0.0/24 \
  my-custom-network
选项含义
--driver bridge使用 bridge 驱动
--subnet 172.18.0.0/16定义网络子网
--gateway 172.18.0.1设置网关 IP
--ip-range 172.18.0.0/24限制容器可分配的 IP 范围
my-custom-network新网络的名称

使用 docker network ls 验证创建是否成功。

4. 将容器连接到网络

docker network connect my-network my-container
  • my-network – 目标网络名称
  • my-container – 容器名称或 ID

容器现在可以通过名称或 IP 地址与 my-network 上的其他容器通信。

5. 将容器从网络断开

docker network disconnect my-network my-container
  • my-network – 要断开的网络
  • my-container – 容器名称或 ID

断开后,容器将失去与该网络上同伴的通信(但仍可能连接到其他网络)。

6. 删除网络

docker network rm <network>

<network> 替换为要删除的网络。

示例

docker network rm my-network

注意: 当网络仍有容器附着时,无法将其删除。

先断开或停止那些容器。

Docker 网络命令速查表

以下是常用 Docker 网络命令的整理参考,包括用法和示例。

1. 删除网络

docker network rm <network>

示例

docker network rm my-network

my-network 是要删除的 Docker 网络的名称(或 ID)。Docker 会删除指定网络;仅连接到该网络的容器会被断开,而同时连接到多个网络的容器仍保持与其他网络的连接。

2. 清理未使用的网络

docker network prune

直接运行该命令会提示确认:

WARNING! This will remove all unused networks.
Are you sure you want to continue? [y/N] y

跳过确认

docker network prune -f   # 或者 --force

仅会删除 未使用 的网络(即未被任何容器附加的网络)。仍在使用中的网络不会受到影响。

3. 创建自定义 IPAM 配置

docker network create-ipam --subnet=<subnet> <network-name>

示例

docker network create-ipam --subnet=192.168.1.0/24 my-custom-network
  • --subnet=192.168.1.0/24 – 为网络定义 IP 地址范围。
  • my-custom-network – 将使用该 IPAM 配置的 Docker 网络名称。

如果省略自定义 IPAM,Docker 将使用默认设置。

4. 使用自定义 IPAM 连接容器

docker network connect-ipam --ip=<ip> <network-name> <container>

示例

docker network connect-ipam --ip=192.168.1.10 my-custom-network my-container
  • --ip=192.168.1.10 – 为容器在该网络上分配的静态 IP。
  • my-custom-network – 具备自定义 IPAM 配置的网络。
  • my-container – 目标容器。

5. 从自定义 IPAM 网络断开容器

docker network disconnect-ipam <network-name> <container>

示例

docker network disconnect-ipam my-custom-network my-container

重要提示: disconnect-ipam 仅适用于使用自定义 IPAM 配置的网络。对于默认 IPAM 网络,请使用常规的 docker network disconnect 命令。

6. 示例:创建桥接网络并测试连通性

# 列出运行中的容器(此时没有)
docker container ls
#> CONTAINER ID   IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES

# 列出已有网络
docker network ls
#> NETWORK ID   NAME      DRIVER   SCOPE
#> 6c51373f78ad bridge    bridge   local
#> 3a33f83c3664 host      host     local
#> e4ebd601732e none      null     local

# 以分离模式运行两个 Ubuntu 容器
docker container run -itd ubuntu:14.04 bash
#> 7b1af2ee48e43f8018c4324bbcb9f52a27f741bd7a0437ddd0f6766bd7ca6b10

docker container run -itd ubuntu:14.04 bash
#> c3ce5dbe5d859705f139e811bc11367d02bf0969492e9d515a3cc6cc636ddfbb

# 验证它们正在运行
docker container ls
#> CONTAINER ID   IMAGE          COMMAND   CREATED          STATUS         NAMES
#> c3ce5dbe5d85   ubuntu:14.04   "bash"    8 seconds ago    Up 7 seconds   unruffled_sinoussi
#> 7b1af2ee48e4   ubuntu:14.04   "bash"    10 seconds ago   Up 9 seconds   trusting_joliot

# 尝试从一个容器 ping 另一个容器(会失败,因为它们在默认 bridge 上)
docker container exec -it 7b1af2ee48e4 bash
#> root@7b1af2ee48e4:/# ping c3ce5dbe5d85
#> ping: unknown host c3d5e5d85

# 创建自定义桥接网络(自定义桥接默认启用 DNS)
docker network create test
#> b1e05c1afdb2f901e

现在可以使用 docker network connect 或在启动容器时加 --network test 将容器附加到 test 网络,它们就能通过名称相互解析。

快速参考表

命令用途示例
docker network rm删除指定网络docker network rm my-network
docker network prune删除所有 未使用 的网络docker network prune -f
docker network create-ipam创建带自定义子网的网络docker network create-ipam --subnet=192.168.1.0/24 my-custom-network
docker network connect-ipam使用指定 IP 将容器连接到自定义网络docker network connect-ipam --ip=192.168.1.10 my-custom-network my-container
docker network disconnect-ipam从自定义 IPAM 网络断开容器docker network disconnect-ipam my-custom-network my-container
docker network create创建普通(默认 IPAM)网络docker network create test

| docker network create-ipam | 创建一个使用自定义 IPAM 的网络 | docker network create-ipam --subnet=10.0.0.0/24 my-net | | docker network connect-ipam | 将容器附加到具有静态 IP 的网络 | docker network connect-ipam --ip=10.0.0.5 my-net my-container | | docker network disconnect-ipam | 从自定义 IPAM 网络中分离容器 | docker network disconnect-ipam my-net my-container | | docker network create | 创建一个常规(桥接)网络(启用 DNS) | docker network create test |

附加命令与示例

81a66a52d64a9dcdca9c5cab98433cdaed2faa83c5b3e6b

列出容器(无正在运行的)

localhost:~$ docker container ls
CONTAINER ID   IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES

test 网络上使用 ubuntu 镜像创建容器

localhost:~$ docker container run -itd --network=test ubuntu:14.04 bash
c7b07b61bb20cdbb6e1b54a165aed0f8907d95d563fdd7a60940d004694c4557

再次列出容器

localhost:~$ docker container ls
CONTAINER ID   IMAGE   COMMAND   CREATED               STATUS               PORTS   NAMES
c7b07b61bb20   ubuntu  "bash"    About a minute ago   Up About a minute

检查容器(摘录)

{
  "Networks": {
    "host": {
      "IPAMConfig": null,
      "Links": null,
      "Aliases": null,
      "NetworkID": "b1e05c1afdb2f901e81a66a52d64a9dcdca9c5cab98433cdaed2faa83c5b3e6b",
      "EndpointID": "b860ca4fdda3e0732367949cb94fd2eded08a4f2e46715a6c125b1bf336c102f",
      "Gateway": "",
      "IPAddress": "",
      "IPPrefixLen": 0,
      "IPv6Gateway": "",
      "GlobalIPv6Address": "",
      "GlobalIPv6PrefixLen": 0,
      "MacAddress": "",
      "DriverOpts": null
    }
  }
}

删除网络

localhost:~$ docker network ls
NETWORK ID     NAME   DRIVER   SCOPE
6c51373f78ac   bridge  bridge   local
3a33f83c3663   host    host     local
e4ebd601732c   none    null     local
348f7295d3ca   test    bridge   local
localhost:~$ docker network rm test
test
localhost:~$

📝 喜欢这篇博客吗?
Buy me a coffee ☕

什么是 None 网络驱动
Meghasharmaa

Back to Blog

相关文章

阅读更多 »

启动 AWS EC2 实例

介绍 本指南将带您完成启动 AWS EC2 实例、安装 Docker 并在 Docker 容器中运行 NGINX 的全过程。完成后您将…

我对 Kubernetes 的看法

文章 URL: https://garnaudov.com/writings/how-i-think-about-kubernetes/ 评论 URL: https://news.ycombinator.com/item?id=46396043 点赞数: 31 评论数: 13