如果您本地有一个 Nginx 镜像,需要在 Kubernetes 集群中部署应用时使用,则需要先上传本地镜像。

前提条件

准备一台带有弹性公网 IP的 ECS 实例(或者该实例做过 NAT),才能把本地构建好的镜像上传到阿里云镜像仓库。

操作步骤

  1. 登录容器镜像服务控制台
  2. 可选: 如果您是第一次访问,系统会提示您设置登录密码,设置完成后,单击确定
    设置 Docker Registry 登录密码
  3. 创建命名空间。
    1. 在左侧导航栏选择默认实例 > 命名空间
    2. 命名空间页面顶部选择地域,然后在页面右上角单击创建命名空间
    3. 创建命名空间对话框中,在命名空间文本框中输入命名空间名称,单击确定
      说明 命名空间名称设置后不可修改。长度为2-30位,可填写小写英文字母、数字、下划线(_)和中划线(-)。下划线(_)和中划线(-)首位或末位。
      创建命名空间
  4. 创建镜像仓库。
    1. 在左侧导航栏选择默认实例 > 镜像仓库
    2. 镜像仓库页面单击创建镜像仓库
      说明镜像仓库页面无需选择地域命名空间,在创建仓库时可以设置。
    3. 创建镜像仓库配置向导对话框的仓库信息中,设置镜像仓库信息,然后单击下一步
      创建镜像仓库-仓库信息

      镜像仓库参数说明:

      • 地域:在列表中选择创建镜像仓库的地域。
      • 命名空间:在列表中选择创建镜像仓库的命名空间。
      • 仓库名称:输入镜像仓库的名称。
      • 仓库类型:包含公开私有两种类型,根据实际需求选择。
      • 摘要:输入镜像仓库相关的信息。
      • 描述信息:输入镜像仓库的描述信息。
      • 设置代码源:当前版本只支持通过命令行推送镜像到镜像仓库,请选择本地仓库
    4. 创建镜像仓库配置向导对话框的代码源中,设置代码源信息,然后单击创建镜像仓库
      创建镜像仓库-代码源

      代码源参数说明:

      • 代码源:根据实际情况,可以选择云CodeGitHubBitbucket私有GitLab本地仓库
      • 代码变更时自动构建镜像:当分支有代码提交后会自动触发构建规则。
      • 海外机器构建:构建时会在海外机房构建,构建成功后推送到指定地域。
      • 不使用缓存:每次构建时会强制重新拉取基础依赖镜像,可能会增加构建时间。
  5. 登录到带有弹性公网 IP 的 ECS,然后执行 Docker 登录命令,并输入密码。
    $ sudo docker login --username=test@aliyun.com registry.cn-beijing.aliyuncs.com
    说明 阿里云不同的可用区对应不同的 registry,以北京为例,登录时必须指明 registry 域名为 cn-beijing。其它可用区详见地域和可用区。并输入您的用户名和登录密码。
    登录成功之后会显示 Login Succeeded
  6. 重命名镜像。
    • 如果您本地的镜像是通过构建生成的,构建过程中需要指定 tag 信息。

      $ sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/mw/nginx:[镜像版本号]

    • 如果您本地的镜像是从其它仓库下载的,已有了 registry 名、命令空间、仓库名和 tag 名称,上传到阿里云 registry 之前需要执行 Docker tag 命令进行修改。

      $ sudo docker tag docker.io/nginx:1.13.5 registry.cn-beijing.aliyuncs.com/mw/nginx: [镜像版本号]

  7. 上传镜像到阿里云 Docker registry。

    $ sudo docker push registry.cn-beijing.aliyuncs.com/mw/nginx: [镜像版本号]

    如果没有报错信息,您本地的 Nginx 镜像就成功上传到阿里云 Docker registry 了。