四时宝库

程序员的知识宝库

Docker 网络命令(docker网络命令)

docker network 命令用于管理 Docker 网络。它允许你创建、检查、列出、连接、断开和删除 Docker 网络。下面是一些常用的子命令和使用 docker 网络命令的示例:

该命令提供在 Docker 主机上创建的所有网络的列表。下面是使用方法:

docker network ls

运行该命令后,Docker 会输出一个表格,其中包含每个网络的信息,包括 ID、名称、驱动程序和范围(本地或全局)。输出结果如下

NETWORK ID     NAME            DRIVER    SCOPE
abcdef123456   bridge          bridge    local
ghijkl789012   host            host      local
mnopqr345678   my-network      bridge    local
stuvwx901234   my-overlay-net  overlay   swarm

在此示例输出中

  1. --IP-range 172.18.0.0/24:定义可分配给该网络上容器的 IP 地址范围。

docker network ls 命令可用于快速检查系统中现有的 Docker 网络及其基本属性。

要检查某个 Docker 网络并查看其详细信息,可以使用 docker network inspect 命令,后面跟上网络名称或 ID。

docker network inspect NETWORK_NAME_OR_ID

用要检查的 Docker 网络的实际名称或 ID 替换 NETWORK_NAME_OR_ID。例如,如果要检查名为 my-network 的网络,可以使用

docker network inspect my-network

docker network inspect 命令的输出会提供指定网络的全面详细信息,包括其配置、连接到该网络的容器、IP 地址范围等。这些信息以 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": {}
  }
  ]

输出结果包含网络名称、ID、创建时间、驱动程序、IP 地址管理 (IPAM) 配置、连接的容器和其他选项等信息。这些信息对于排除故障、管理网络配置或了解 Docker 中的网络设置非常有用。

要创建 Docker 网络,可以使用 docker network create 命令,然后输入所需的选项和网络名称。

docker network create my-network

该命令使用默认网桥驱动程序和默认选项创建名为 my-network 的 Docker 网络。如果你想指定其他选项,如网络驱动程序、子网、网关或其他配置,可以在命令中包含这些选项。

下面是一个使用自定义选项创建 Docker 网络的示例:

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

在这个例子中

  1. my-network 是要连接容器的网络名称。

运行 docker network create 命令后,Docker 将根据提供的配置创建指定的网络。你可以使用 docker network ls 命令列出 Docker 主机上的所有网络,以验证网络是否已创建。

要将 Docker 容器连接到网络,可以使用 docker network connect 命令,然后输入网络名称和容器名称或 ID。

docker network connect my-network my-container

在这个例子中

  1. my-network 是要断开容器连接的网络名称。

运行此命令后,指定容器(my-container)将连接到 my-network 网络。这样,容器就可以使用容器名称或网络中的 IP 地址与同一网络中的其他容器通信。

要断开 Docker 容器与网络的连接,可以使用 docker network disconnect 命令,然后输入网络名称和容器名称或 ID。

docker network disconnect my-network my-container

在这个例子中

  1. my-container 是要断开网络连接的容器的名称或 ID。

运行此命令后,指定容器(my-container)将与 my-network 网络断开连接。这意味着该容器将无法再与该网络上的其他容器通信,尽管它可能仍连接到其他网络或拥有自己的网络命名空间。

要移除一个 Docker 网络,可以使用 docker network rm 命令,然后输入要移除的网络名称或 ID。

docker network rm my-network
  1. --subnet=192.168.1.0/24指定新 IPAM 配置的子网。您可以根据网络要求调整子网。

运行此命令后,Docker 将删除指定的网络 (my-network)。任何专门连接到该网络的容器都将断开与该网络的连接。不过,如果一个容器连接了多个网络,其中一个被删除后,该容器仍会与其他网络连接。

docker network prune 命令用于删除系统中所有未使用的 Docker 网络。未使用的网络是指没有连接到任何容器的网络。通过删除不再使用的网络,该命令有助于清理 Docker 环境。

docker network prune

在不带任何选项的情况下运行 docker network prune 时,Docker 会提示你确认是否要删除所有未使用的网络。你可以输入 "y",然后按 Enter 键继续删除。

如果想跳过确认提示,可以使用 -f 或 --force选项:

docker network prune -f

该命令将立即删除所有未使用的网络,而无需请求确认。

注意 - 请务必注意,docker network prune 命令只移除未使用的网络。一个或多个容器仍在使用的网络不会被移除。

docker network create-ipam 命令用于为 Docker 网络创建新的 IP 地址管理(IPAM)配置。IPAM 允许你定义自定义的 IP 地址范围、子网、网关和其他网络配置。

docker network create-ipam --subnet=192.168.1.0/24 my-custom-network

在这个例子中

  1. my-custom-network 是要将容器连接到的具有自定义 IPAM 配置的 Docker 网络的名称。

运行 docker network create-ipam 命令后,Docker 将为 my-custom-network Docker 网络创建一个新的 IPAM 配置,并指定子网。这样,你就可以为连接到该网络的容器定义特定的 IP 地址范围和网络设置。

值得注意的是,自定义 IPAM 配置是可选的,Docker 会为未指定自定义配置而创建的网络提供默认 IPAM 设置。自定义 IPAM 配置适用于需要精确控制 IP 地址分配和网络参数的高级网络场景。

docker network connect-ipam 命令用于将容器连接到具有自定义 IP 地址管理(IPAM)配置的 Docker 网络。IPAM 允许你定义特定的 IP 地址范围、子网、网关和其他网络设置。

docker network connect-ipam --ip=192.168.1.10 my-custom-network my-container

在这个例子中

  1. my-custom-network 是具有自定义 IPAM 配置的 Docker 网络的名称,您要断开容器与该网络的连接。

运行 docker network connect-ipam 命令后,Docker 会使用自定义 IPAM 配置将指定容器(my-container)连接到 my-custom-network Docker 网络。容器将被分配到网络上指定的 IP 地址(192.168.1.10)。

使用带有自定义 IPAM 配置的 docker network connect-ipam 命令,可以让你对连接到 Docker 网络的容器的 IP 地址分配和网络参数拥有更多控制权。

docker network disconnect-ipam 命令用于断开容器与具有自定义 IP 地址管理(IPAM)配置的 Docker 网络的连接。该命令专为具有自定义 IPAM 设置的网络而设计。

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

在这个例子中

  1. my-container 是要断开网络连接的容器的名称或 ID。

运行 docker network disconnect-ipam 命令后,Docker 会断开指定容器(my-container)与带有自定义 IPAM 配置的 my-custom-network Docker 网络的连接。

需要注意的是,docker network disconnect-ipam 命令专门用于自定义 IPAM 配置的网络。对于使用默认 IPAM 设置的网络,你可以使用普通的 docker network disconnect 命令,而不用 -ipam 后缀。

默认情况下,创建网桥网络时未启用 DNS。但如果我们创建自定义桥接网络,DNS 默认会启用。

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

localhost:~$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
6c51373f78ad   bridge    bridge    local
3a33f83c3664   host      host      local
e4ebd601732e   none      null      local

localhost:~$ docker container run -itd ubuntu:14.04 bash
7b1af2ee48e43f8018c4324bbcb9f52a27f741bd7a0437ddd0f6766bd7ca6b10

localhost:~$ docker container run -itd ubuntu:14.04 bash
c3ce5dbe5d859705f139e811bc11367d02bf0969492e9d515a3cc6cc636ddfbb

localhost:~$ docker container ls
CONTAINER ID   IMAGE          COMMAND   CREATED          STATUS         PORTS     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

localhost:~$ docker container exec -it 7b bash
root@7b1af2ee48e4:/# ping c3ce5dbe5d85

ping: unknown host c3ce5dbe5d85
root@7b1af2ee48e4:/#

为了实现上述用例,让我们先创建一个网络 "测试":

localhost:~$ docker network create test
b1e05c1afdb2f901e81a66a52d64a9dcdca9c5cab98433cdaed2faa83c5b3e6b

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

localhost:~$

现在,用 ubuntu 映像创建一个容器,网络名为 "test":

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             clever_wu

使用 inspect 命令检查容器:

"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:~$

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接