01-Docker build 镜像时,无法访问网络

前言

在使用 docker build 命令构建 Docker 镜像时遇到无法联网的情况,可能会有多种情况的发生。

检查主机网络设置

测试主机的网络连接

1
ping www.baidu.com

测试主机是否能够访问外部网络。如果主机无法访问外部网络,则可能是由于主机网络设置错误或网络故障导致的。

测试主机的 DNS 解析

1
nslookup www.baidu.com

测试主机是否能够成功将域名解析为 IP 地址。如果 DNS 解析失败,则可能是由于主机的域名服务器设置错误或 DNS 服务器故障导致的。

测试主机的代理服务器连接

如果你配置了代理服务,可以通过以下进行测试,这将使用 HTTP 代理服务器连接到 www.baidu.com 网站。你需要将 your.proxy.serverport 替换为实际的代理服务器地址和端口号。如果连接成功,则表示主机的代理服务器设置正确。

1
curl -x http://your.proxy.server:port http://www.baidu.com

检查 Docker 网络设置

查看 Docker 网络列表

1
docker network ls

这将列出所有可用的 Docker 网络。默认情况下,Docker 安装时会创建三个网络:bridgehostnone

查看 Docker 网络的详细信息

1
docker network inspect <network-name>

这将显示指定 Docker 网络的详细信息,包括网络的 IP 地址范围、网关、域名服务器等。

测试 Docker 网络连接

1
docker run --rm --network=<network-name> alpine ping <ip-address>

这将在指定的 Docker 网络中运行一个 Alpine 容器,并使用 ping 命令测试指定 IP 地址的连接。你需要将 <network-name> 替换为实际的 Docker 网络名称,将 <ip-address> 替换为要测试的 IP 地址。如果连接成功,则表示 Docker 网络设置正确。示例代码如下:

1
docker run --rm --network=host alpine ping www.baidu.com

测试 docker 在使用宿主机 host 网络情况中运行一个 Alpine 容器,并使用 ping 命令测试 www.baidu.com

代理服务器配置

如果你的主机使用的是代理服务器,请确保 Docker 容器已正确配置代理设置。例如,可以将以下命令添加到 Dockerfile 文件中:

1
2
ENV http_proxy "http://your.proxy.server:port"
ENV https_proxy "http://your.proxy.server:port"

这将在 Docker 容器中设置 HTTPHTTPS 代理服务器。你需要将 your.proxy.serverport 替换为实际的代理服务器地址和端口号。

还有一种可能,你需要配置镜像源来更快的访问中国大陆的软件包:

1
2
3
4
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/snapshot.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list

01-Docker build 镜像时,无法访问网络
https://flepeng.github.io/042-云原生-01-Docker-01-Docker-build-镜像时,无法访问网络/
作者
Lepeng
发布于
2023年3月9日
许可协议