Docker实操1-把image上传到阿里云仓库并在国内服务器下载

背景

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

步骤

进入容器镜像服务

在阿里云的控制台找到容器镜像服务

创建个人实例

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

注意,在这边应该会选区域,请务必选择跟你服务器所在地一样的区域,否则无法连接

看了一下,个人实例有命名空间和镜像数量限制,但是对我们个人而言已经绰绰有余

创建命名空间

创建镜像仓库

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

在这边你可以选择镜像的来源,比如GitHub或者本地,由于我在其他服务器上已经下载过了,所以我选择本地仓库

上传/下载镜像

这一段我直接复制官网的说法

  1. 登录阿里云Docker Registry

    1
    $ docker login --username=xxxx*****@xx.com [公网地址]

    用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
    (您可以在访问凭证页面修改凭证密码)

  2. 从Registry中拉取镜像

    1
    $ docker pull [公网地址]/maydaychen/postgres:[镜像版本号]
  3. 将镜像推送到Registry

    1
    2
    3
    4
    $ docker login --username=2458*****@qq.com [公网地址]
    $ docker tag [ImageId] [公网地址]/maydaychen/postgres:[镜像版本号]
    $ docker push [公网地址]/maydaychen/postgres:[镜像版本号]
    请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
  4. 选择合适的镜像仓库地址
    从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。 如果您使用的机器位于VPC网络,请使用 [专有网络] 作为Registry的域名登录。

  5. 示例
    使用”docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。

    1
    2
    3
    4
    $ docker 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