背景
由于众所周知的原因,目前国内的服务器拉docker镜像非常困难,基本可以说是完全没法用
因此,怎么把image下载下来成了很多人头疼的问题,这里分享一下一种解决办法,就是在已有该镜像的服务器上把镜像推给阿里云,然后再从阿里云上下载该镜像
步骤
进入容器镜像服务
在阿里云的控制台找到容器镜像服务

创建个人实例
进入以后可以看到有个人实例跟企业实例选项,在这里我们选择个人实例

注意,在这边应该会选区域,请务必选择跟你服务器所在地一样的区域,否则无法连接
看了一下,个人实例有命名空间和镜像数量限制,但是对我们个人而言已经绰绰有余

创建命名空间

创建镜像仓库

镜像仓库 -> 创建镜像仓库 -> 填写相关内容
仓库名称:可以是image name
仓库类型:公有或者私有
填写完成后点击下一步

在这边你可以选择镜像的来源,比如GitHub或者本地,由于我在其他服务器上已经下载过了,所以我选择本地仓库
上传/下载镜像
这一段我直接复制官网的说法
登录阿里云Docker Registry
1
docker login --username=xxxx*****@xx.com [公网地址]
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
(您可以在访问凭证页面修改凭证密码)从Registry中拉取镜像
1
docker pull [公网地址]/maydaychen/postgres:[镜像版本号]
将镜像推送到Registry
1
2
3
4docker login --username=2458*****@qq.com [公网地址]
docker tag [ImageId] [公网地址]/maydaychen/postgres:[镜像版本号]
docker push [公网地址]/maydaychen/postgres:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。 如果您使用的机器位于VPC网络,请使用 [专有网络] 作为Registry的域名登录。示例
使用”docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。1
2
3
4docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
docker tag 37bb9c63c8b2 [专有地址]/acs/agent:0.7-dfb6816使用 “docker push” 命令将该镜像推送至远程。
1
docker push [专有地址]/acs/agent:0.7-dfb6816