Docker拉取镜像失败解决办法
Docker无法拉取镜像解决办法
一.现象描述
在docker拉取镜像的时候重复拉取镜像然后超时。
二.解决办法
1.配置国内镜像源地址加速
vi /etc/docker/daemon.json
在文件中增加如下内容
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
2.通过git hub项目把docker hub的镜像同步到阿里云个人镜像仓库或者harbor私服
原理:Github Action + Skopeo 工具同步docker hub镜像
首先注册阿里云账号。
然后访问 https://help.aliyun.com/zh/acr/?source=5176.11533457&userCode=uelj47qf 进行ACR服务订阅
点击免费试用
选择立即试用,然后选择个人实例
根据步骤设置密码和命名空间
然后,在Github中创建账户以及仓库
然后新增文件sync-image-example.yml
,内容如下
# 工作流名称
name: Sync-Images-to-DockerHub-Example
# 工作流运行时显示名称
run-name: ${{ github.actor }} is Sync Images to DockerHub.
# 怎样触发工作流
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# 工作流程任务(通常含有一个或多个步骤)
jobs:
syncimages:
runs-on: ubuntu-latest
steps:
- name: Checkout Repos
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.9.1
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
registry: registry.cn-hangzhou.aliyuncs.com
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
logout: false
- name: Use Skopeo Tools Sync Image to Docker Hub
run: |
#!/usr/bin/env bash
skopeo copy docker://docker.io/rancher/fleet-agent:v0.9.5 docker://registry.cn-hangzhou.aliyuncs.com/rancher-images/fleet-agent:v0.9.5
其中
secrets.DOCKER_USERNAME
和secrets.DOCKER_PASSWORD
需要自己配置,registry.cn-hangzhou.aliyuncs.com
是阿里云镜像仓库的地址。配置方法如下:
skopeo copy docker://docker.io/rancher/fleet-agent:v0.9.5 docker://registry.cn-hangzhou.aliyuncs.com/rancher-images/fleet-agent:v0.9.5
,其中docker://docker.io
为docker hub仓库的镜像源地址,此处复制的镜像为rancher/fleet-agent:v0.9.5
,registry.cn-hangzhou.aliyuncs.com
为阿里云的镜像源地址,rancher-images
是前面新建的命名空间。每次运行前修改镜像源地址即可。
保存代码后可以在Actions
页面查看脚本运行结果
然后就可以在阿里云的镜像仓库看到复制后的镜像。