操作场景
使用容器引擎客户端推送或者拉取镜像时,连接镜像仓库有临时登录指令和长期登录指令。
- 如果您使用的是Docker容器引擎客户端,且需要长期推送或者拉取镜像,那么您可以使用获取docker容器引擎长期有效登录指令来登录容器镜像仓库。如果您只是偶尔推送或者拉取镜像,使用临时登录指令即可。
- 如果您使用的是containerd容器引擎客户端,且需要长期推送或者拉取镜像,那么您可以使用获取containerd容器引擎长期有效的拉取、推送镜像指令来访问容器镜像仓库。
注意
上述指令,请您务必妥善保管,防止信息泄露。
为保证安全,获取登录指令过程建议在开发环境执行。
本章节介绍如何获取docker容器引擎长期有效的登录指令以及containerd容器引擎长期推送、拉取镜像指令。
说明
临时登录指令6小时后会过期。提示过期后,需要清除浏览器缓存后重新生成登录指令。
长期有效登录指令的有效期为永久。
操作流程
您可以按照以下流程获取长期有效登录指令。
获取docker容器引擎长期有效登录指令
步骤 1 获取编程访问权限。(如果当前用户已有编程访问权限,请忽略此步骤)
- 以管理员身份,登录管理控制台。
- 在管理控制台左上角单击切换资源池按钮
,选择区域和项目。 - 单击左侧导航栏
,选择“管理与部署”>“统一身份认证服务IAM”。 - 在“用户”页搜索框输入并搜索要授予编程访问权限的用户名称。
- 单击用户名称,进入用户详情页。
- 单击“访问方式”后面的按钮。
- 勾选“编程访问”选项。(可单独勾选编程访问,也可以2种访问方式同时勾选。)
步骤 2 获取AK/SK访问密钥。(如果当前用户已有AK/SK访问密钥,请忽略此步骤)
说明访问密钥即AK/SK(Access Key ID/Secret Access Key),表示一组密钥对,用于验证调用API发起请求的访问者身份,与密码的功能相似。如果您已有AK/SK,可以直接使用,无需再次获取。
- 登录管理控制台,将鼠标移到用户名处,单击“我的凭证”。
- 在“管理访问密钥”页签,单击“新增访问密钥”。
- 输入描述信息,单击“确定”。
- 在弹出的提示页面单击“立即下载”。
- 下载成功后,在“credentials”文件中即可获取AK和SK信息。
表 credentials文件示例
| User Name | Access Key Id | Secret Access Key |
|---|---|---|
| a ***** | RVHVMX ****** | H3nPwzgZ ****** |
说明为防止访问密钥泄露,建议您将其保存到安全的位置。
步骤 3 登录容器镜像服务控制台。
步骤 4 依次单击页面的“登录指令->长期有效登录指令->导入访问密钥”,选择访问密钥文件credentials.csv或者手动输入步骤2中获取的credentials.csv文件中的Access Key Id和 Secret Access Key, 单击“生成指令”后会自动生成长期有效的登录指令。到此获取完成,后面的步骤您无需执行。如果您的控制台的页面暂无长期有效登录指令页签,请跳过本步骤参考后面的步骤完成手动拼接长期有效登录指令。
步骤 5 获取区域项目名称、镜像仓库地址。
- 登录管理控制台,将鼠标移到用户名处,单击“我的凭证”。
- 在“项目列表”页签中查找当前区域对应的项目。
- 参考客户端上传镜像中步骤2获取镜像仓库地址,登录指令末尾的域名即为镜像仓库地址。
步骤 6 登录一台linux系统的计算机,执行如下命令获取登录密钥。
printf "$AK" | openssl dgst -binary -sha256 -hmac "$SK" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
其中AK和SK为步骤2获取的AK/SK。
示例
步骤 7 使用如下的格式拼接登录指令。
docker login -u [ 区域项目名 ] @ [ AK ] -p [ 登录密钥 ] [ 镜像仓库地址 ]
其中,区域项目名和镜像仓库地址在步骤5中获取,AK在步骤2中获取,登录密钥为步骤6的执行结果。
说明
登录密钥字符串是经过加密的,无法逆向解密,从-p无法获取到SK。
获取的登录指令可在其他机器上使用并登录。
步骤 8 使用history -c命令清理相关使用痕迹,避免隐私信息泄露。
获取containerd容器引擎长期有效的拉取、推送镜像指令
步骤 1 已拥有编程访问权限。获取编程访问权限方式如下:
- 以管理员身份,登录统一身份认证服务IAM控制台。
- 在管理控制台左上角单击切换资源池按钮

,选择区域和项目。 - 在“用户”页搜索框输入并搜索要授予编程访问权限的用户名称。
- 单击用户名称,进入用户详情页。单击“访问方式”后面的
按钮。勾选“编程访问”选项(可单独勾选编程访问,也可以2种访问方式同时勾选。)
步骤 2 已获取AK/SK访问密钥,获取方式如下:
- 登录管理控制台,将鼠标移到用户名处,单击“我的凭证”。
- 在“管理访问密钥”页签,单击“新增访问密钥”。
- 输入描述信息,单击“确定”。
- 在弹出的提示页面单击“立即下载”。
- 下载成功后,在“credentials”文件中即可获取AK和SK信息。
表 credentials文件示例
| User Name | Access Key Id | Secret Access Key |
|---|---|---|
| a ***** | RVHVMX ****** | H3nPwzgZ ****** |
说明每个访问密钥文件仅能下载一次,请妥善保管。
步骤 3 获取区域项目名称、镜像仓库地址。
- 登录管理控制台,将鼠标移到用户名处,单击“我的凭证”。
- 在“项目列表”页签中查找当前区域对应的项目。
- 参考客户端上传镜像中步骤2获取镜像仓库地址,登录指令末尾的域名即为镜像仓库地址。
步骤 4 登录一台Linux系统的计算机,执行如下命令获取登录密钥。
printf "$AK" | openssl dgst -binary -sha256 -hmac "$SK" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
请将AK替换为步骤2credentials.csv文件的 Access Key Id ,SK替换为步骤2credentials.csv文件的 Secret Access Key。
执行上面的命令后,我们得到的登录密钥示例如下:
cab4ceab4a1545***************
说明以上密钥仅为示例,请以实际获得的密钥为准。
步骤 5 使用如下的格式拼接长期拉取和推送镜像的指令。
- 镜像拉取指令拼接
ctr image pull --user [项目名] @ [ AK ]:[ 登录密钥 ] [ 镜像仓库地址 ]/{组织名称}/{镜像名称}:{版本名称}
其中,项目名和镜像仓库地址在步骤3中获取,AK步骤2中获取的credentials.csv文件中的Access Key Id字段,登录密钥为步骤4的执行结果。
- 镜像推送指令拼接
ctr image push --user [项目名] @ [ AK ]:[ 登录密钥 ] [ 镜像仓库地址 ]/{组织名称}/{镜像名称}:{版本名称}
其中,项目名和镜像仓库地址在步骤3中获取,AK步骤2中获取的credentials.csv文件中的Access Key Id字段,登录密钥为步骤4的执行结果。
说明
登录密钥字符串是经过加密的,无法将登录密钥字符串逆向解密成SK。
获取的指令可在其他机器上使用并进行镜像上传下载。