侧边栏壁纸
博主头像
拾荒的小海螺博主等级

只有想不到的,没有做不到的

  • 累计撰写 140 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
OPS

Docker:一招解决最近拉取失败的问题

拾荒的小海螺
2024-08-29 / 0 评论 / 0 点赞 / 16 阅读 / 8469 字

1、简述

最近使用 Docker 的过程中,很多开发者可能遇到过 Docker 镜像拉取失败的问题。这种情况往往与网络环境、DNS 配置或者 Docker 的镜像源有关。国内很多镜像源无法使用,本文将介绍一种快速有效的解决方案,帮助你在遇到 Docker 镜像拉取失败时,立即恢复正常工作。

GitHub地址:https://github.com/DaoCloud/public-image-mirror?tab=readme-ov-file

1724938434761.jpg

2、问题表现

当你在终端执行 docker pull 命令时,可能会遇到以下错误信息:

[root@localhost rabbitmq]# docker-compose up -d
WARN[0000] /data/rabbitmq/docker-compose.yml: `version` is obsolete 
[+] Running 0/10
 ⠙ rabbitmq [⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling                                                                                                                                                                                                                                                                                                                                                                135.1s 
   ⠏ 857cc8cb19c0 Retrying in 1 second                                                                                                                                                                                                                                                                                                                                                         113.9s 
   ⠏ e831d571de41 Retrying in 1 second                                                                                                                                                                                                                                                                                                                                                         113.9s 
   ⠏ 7f4e4530a27e Retrying in 1 second                                                                                                                                                                                                                                                                                                                                                         113.9s 
   ⠏ 2bbef6c00dc5 Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
   ⠏ e88f524a2370 Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
   ⠏ 46b865c7fc1a Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
   ⠏ 99e4e364f4cf Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
   ⠏ d7fdc9a8b59f Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
   ⠏ 822d441969cb Waiting                                                                                                                                                                                                                                                                                                                                                                      113.9s 
error pulling image configuration: download failed after attempts=6: dial tcp 199.59.148.7:443: connect: connection refused

3、替换前缀

推荐使用添加前缀的方式,前缀替换的 Registry 的规则, 这是人工配置的, 有需求提可以在GItHub提需求。

源站 替换为 备注
cr.l5d.io l5d.m.daocloud.io 将废弃请使用添加前缀的方式
docker.elastic.co elastic.m.daocloud.io
docker.io docker.m.daocloud.io
gcr.io gcr.m.daocloud.io
ghcr.io ghcr.m.daocloud.io
k8s.gcr.io k8s-gcr.m.daocloud.io k8s.gcr.io 已被迁移到 registry.k8s.io
registry.k8s.io k8s.m.daocloud.io
mcr.microsoft.com mcr.m.daocloud.io
nvcr.io nvcr.m.daocloud.io
quay.io quay.m.daocloud.io

增加前缀 (推荐方式)。比如:

              docker.io/library/busybox
                 |
                 V
m.daocloud.io/docker.io/library/busybox

或者 支持的镜像仓库 的 前缀替换 就可以使用。比如:

           docker.io/library/busybox
             |
             V
docker.m.daocloud.io/library/busybox

4、kubeadm

K8s 通过 kubeadm 来拉取镜像,替换镜像repository。

  • 通过 加速 安装 kubeadm
kubeadm config images pull --image-repository k8s-gcr.m.daocloud.io
  • 通过 加速 安装 kind
kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1
  • 通过 加速 部署 应用(这里以 Ingress 为例)
wget -O image-filter.sh https://github.com/DaoCloud/public-image-mirror/raw/main/hack/image-filter.sh && chmod +x image-filter.sh

wget -O deploy.yaml https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml

cat ./deploy.yaml | ./image-filter.sh | kubectl apply -f -

5、设置加速器

因大多镜像是国外的,国内的镜像大多数不行,可以快点下载对应的镜像。您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

6、总结

Docker 镜像拉取失败的问题在开发中并不少见,但通过配置国内镜像源,这个问题通常可以快速解决。本文介绍的方法简单高效,适合开发者在遇到拉取问题时快速恢复正常工作。如果你有更复杂的需求,可能需要进一步检查网络配置或考虑其他优化方案。

希望这篇文章能对你解决 Docker 拉取失败的问题有所帮助!

你可以根据实际情况选择不同的国内镜像源,并确保网络环境稳定,以进一步提升开发效率。如果有其他问题,欢迎留言讨论。

0

评论区