解决Docker客户端无法拉取镜像问题
解决Docker客户端无法拉取镜像问题

解决Docker客户端无法拉取镜像问题

在迁移容器数据至Volume的过程中,使用ubuntu作为基础镜像,执行一次性的数据复制任务。

执行复制代码

docker run --rm \
> --volumes-from shynet \
> -v shynet_data:/new_data \
> ubuntu bash -c "cp -a /usr/src/shynet /new_data"

拉取报错

Unable to find image 'ubuntu:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 162.220.12.226:443: connect: connection refused.

这个报错说明 Docker 客户端无法从 Docker Hub 拉取 ubuntu:latest 镜像。原因是无法连接到 Docker Hub 的注册服务 https://registry-1.docker.io/v2/,导致镜像无法下载。

可能的原因

1、网络连接问题

Docker 无法访问公网,可能是由于防火墙、代理或 DNS 设置的问题。

2、Docker Hub 服务不可用

如果 Docker Hub 暂时不可用,也可能出现类似错误。

3、代理或网络环境限制

某些网络环境(如公司内部网络或中国大陆的部分网络)对 Docker Hub 的访问可能受限。

解决方法

1、检查网络连接

尝试从服务器或终端直接访问 Docker Hub 注册地址,验证是否能访问:

curl -v https://registry-1.docker.io/v2/

如果返回 Connection refused 或超时,说明网络问题需要解决。

* About to connect() to registry-1.docker.io port 443 (#0)
*   Trying 108.160.167.174...

检查 DNS 设置,确保解析正确:

nslookup registry-1.docker.io

DNS解析信息

Server:         183.60.83.19
Address:        183.60.83.19#53

Non-authoritative answer:
Name:   registry-1.docker.io
Address: 108.160.167.174
Name:   registry-1.docker.io
Address: 2a03:2880:f11c:8183:face:b00c:0:25de

2、配置 Docker 使用镜像加速器

如果网络问题无法解决,可以配置 Docker 镜像加速器来使用国内代理,例如阿里云、网易等提供的服务:

编辑 Docker 的配置文件:

sudo vi /etc/docker/daemon.json

添加以下内容:

{
    "registry-mirrors": [
      "https://<your-mirror-address>"
    ]
}

替换 <your-mirror-address> 为以下之一

阿里云加速器(需登录阿里云获取地址)

网易加速器:https://hub-mirror.c.163.com

腾讯云加速器:https://mirror.ccs.tencentyun.com

建议使用阿里云加速器

1、获取镜像加速器:https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images
2、镜像加速器地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

重启 Docker 服务:

sudo systemctl restart docker

3、手动下载镜像

如果加速器也不可用,可以手动下载 ubuntu:latest 镜像并导入:

在本地机器上运行:

docker pull ubuntu:latest
docker save ubuntu:latest > ubuntu_latest.tar

值得注意的是,save命令是将镜像保存到当前路径下。

将 ubuntu_latest.tar 传到目标机器:

scp ubuntu_latest.tar root@<remote-host>:/path/to/</remote-host>

在目标机器上导入镜像:

docker load < /path/to/ubuntu_latest.tar

4、使用本地已有镜像

如果服务器上已经有其他镜像,也可以替换为类似功能的镜像。例如:

docker run --rm \
  --volumes-from shynet \
  -v shynet_data:/new_data \
  alpine bash -c "cp -a /usr/src/shynet /new_data"

注意:需要保证使用的镜像中包含必要的工具(如 cp)。

总结

1、确认网络环境是否正常连接 Docker Hub。

2、配置镜像加速器解决国内网络环境问题。

3、如果问题持续,可以手动下载并导入镜像,或者使用已有的镜像替代。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注