Docker 安装报错 “Error starting daemon: Error initializing network controller: Error creating default network: could not find an available, non-overlapping IPv4 address pool"

阅读时长 5 分钟读完

在使用 Docker 安装时,有时会遇到上面的错误提示。这个错误的原因在于 Docker 在安装时需要一个可用的 IP 地址池,但是没有找到一个可用的非重叠 IPv4 地址池。

解决方案

方案一:更改默认 IP 地址池

首先,我们需要了解 Docker 默认使用的 IP 地址池是 172.17.0.0/16。如果你的本地网络已经使用了这个地址池的 IP 地址,那么 Docker 就会找不到可用的地址池。

要解决这个问题,我们可以通过修改 Docker 的配置文件来更改默认的 IP 地址池。可以通过以下步骤来完成:

  1. 停止 Docker 进程:sudo systemctl stop docker
  2. 打开 /etc/docker/daemon.json 文件(如果该文件不存在,请新建一个)。
  3. 在该文件中添加以下内容:

这里的 bip 参数可以是任何你想要的 IPv4 地址池。例如,如果你希望使用 10.0.0.0/24 的地址池,就可以将 bip 修改为 "10.0.0.1/24"

  1. 保存并关闭文件。
  2. 重新启动 Docker 进程:sudo systemctl start docker

方案二:使用网络代理

如果你的本地网络已经使用了所有可用的 IPv4 地址,或者你不想更改默认的 IP 地址池,那么可以使用网络代理来解决这个问题。

Docker 支持使用不同的网络代理来提供网络功能。这些网络代理可以充当 Docker 进程和主机网络之间的桥梁,允许 Docker 进程使用虚拟网络来管理容器之间的通信。

以下是使用网络代理的步骤:

  1. 安装一个 Docker 网络插件。常见的插件包括 bridgemacvlanipvlan 等。
  2. 创建一个 Docker 网络,使用指定的网络插件。例如,可以使用以下命令来创建一个 bridge 网络:
  1. 启动 Docker 容器,并将容器附加到刚刚创建的网络上。例如,可以使用以下命令来启动一个容器:
  1. 检查容器是否已经与网络连接成功。可以使用以下命令来检查:

从输出中可以看到,容器已经成功连接到网络:

-- -------------------- ---- -------
-
    -
        ------- --------------------
        ----- -------------------------------------------------------------------
        ---------- ---------------------------------
        -------- --------
        --------- ---------
        ------------- ------
        ------- -
            --------- ----------
            ---------- -----
            --------- -
                -
                    --------- ----------------
                    ---------- ------------
                -
            -
        --
        ----------- ------
        ------------- -
            ------------------------------------------------------------------- -
                ------- ---------------
                ------------- -------------------------------------------------------------------
                ------------- --------------------
                -------------- ----------------
                -------------- --
            -
        --
        ---------- -
            ------------------------------------------- -------
            --------------------------------------- -------
            ------------------------------------------------- -------
            ---------------------------------------------- ----------
            --------------------------------- ----------
            -------------------------------- ------
        -
    -
-

总结

在使用 Docker 安装时,可能会出现 “Error starting daemon: Error initializing network controller: Error creating default network: could not find an available, non-overlapping IPv4 address pool" 的错误。这个错误通常是由于 Docker 默认使用的 IP 地址池与本地网络中的 IP 地址冲突造成的。我们可以通过更改默认 IP 地址池或使用网络代理来解决这个问题。需要注意的是,在更改默认 IP 地址池时,应该选择一个未被本地网络使用的 IPv4 地址池。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b0ee8548841e9894d2b1db

纠错
反馈