DockerHub镜像迁移到自定义源
大约 1 分钟...
提示
DockerHub 镜像迁移到自定义源
将 DockerHub 的镜像转存到自己的阿里云容器镜像服务
参考(阿里云云效文档): 从海外下载基础镜像导致流水线镜像构建任务缓慢
解决方案:按照以下步骤,修改您的 Dockerfile:
将境外镜像在 pull 到本地。
docker pull openjdk:8-jdk-alpine
将基础镜像 push 到阿里云镜像仓库(cr.console.aliyun.com)的国内 region(比如北京、上海等)。
docker tag openjdk:8-jdk-alpine registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine docker push registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine
修改你的 dockerfile 中 FROM,从你自己的镜像仓库下载镜像 。
From registry.cn-beijing.aliyuncs.com/yournamespace/openjdk:8-jdk-alpine
脚本封装
按照上面的过程手动操作略麻烦,这里封装一个脚本来用
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "docker镜像tag不能为空"
exit 1
fi
# tag=node:18-alpine
tag=$1
tag_new=registry.cn-shanghai.aliyuncs.com/{自己的命名空间}/${tag}
docker pull ${tag}
docker tag ${tag} ${tag_new}
docker push ${tag_new}
使用说明, 以阿里云容器镜像服务为例:
将上面代码保存到 shell 文件, 如:
transfer-docker-registry.sh
, 并给予执行权限:chmod +x transfer-docker-registry.sh
在 shell 登录自己的阿里云 Docker Registry:
docker login --username={自己的阿里云账户全名} registry.cn-shanghai.aliyuncs.com
迁移所需的镜像, 例如:
./transfer-docker-registry.sh node:18-alpine