前言

由于某些不可抗力因素,国内大部分Docker镜像站停止服务,为了能够继续正常拉取Docker镜像,可以利用海外VPS推送镜像到阿里云ARC私有容器镜像仓库,实现在本地服务器登录阿里云ARC私有容器镜像仓库拉取所需的镜像。

在阿里云创建容器镜像仓库实例

省略

在海外VPS上拉取并推送镜像

脚本拉取并推送

运行以下的bash脚本即可实现快速拉取并推送镜像。

注意:这个脚本需要修改很多参数才能正常使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# 需要修改的参数修改后需要删除[]
# 读取用户输入的镜像名和版本号
echo "海外服务器拉取镜像脚本"
read -p "请输入要拉取的镜像名(例如:nginx:latest): " IMAGE_NAME
read -p "请输入要推送的镜像版本号: " IMAGE_TAG

# 定义仓库的用户名和密码
USERNAME="[此处修改用户名]"
PASSWORD="[此处修改密码]" # 将your_password_here替换为实际的密码

# 从Docker Hub拉取镜像
echo "从Docker Hub拉取镜像: $IMAGE_NAME"
docker pull $IMAGE_NAME

# 获取拉取的镜像的Image ID
IMAGE_ID=$(docker images $IMAGE_NAME --format "{{.ID}}")

# 登录阿里云私有镜像仓库
echo "登录到阿里云私有镜像仓库"
echo $PASSWORD | docker login --username=$USERNAME --password-stdin registry.[此处修改实例地域].aliyuncs.com

# 给镜像重新打标签
NEW_IMAGE_NAME="registry.[此处修改实例地域].aliyuncs.com/[此处填写命名空间]/[此处填写仓库名称]:$IMAGE_TAG"
echo "重新打标签为: $NEW_IMAGE_NAME"
docker tag $IMAGE_ID $NEW_IMAGE_NAME

# 推送镜像到私有仓库
echo "推送镜像到私有仓库"
docker push $NEW_IMAGE_NAME

# 退出阿里云私有镜像仓库
echo "退出阿里云私有镜像仓库"
docker logout registry.[此处修改实例地域].aliyuncs.com

echo "拉取并推送完成!"

命令拉取并推送

1
2
3
4
5
sudo docker pull 镜像名:版本号
sudo docker login --username=用户名 registry.[此处修改实例地域].aliyuncs.com
sudo docker tag [ImageId] registry.[此处修改实例地域].aliyuncs.com/[此处填写命名空间]/[此处填写仓库名称]:[镜像版本号]
sudo docker push registry.[此处修改实例地域].aliyuncs.com/[此处填写命名空间]/[此处填写仓库名称]:[镜像版本号]
sudo docker logout registry.[此处修改实例地域].aliyuncs.com