获取长期有效登录或推拉镜像指令
操作场景
本章节介绍如何获取docker容器引擎长期有效的登录指令以及containerd容器引擎长期推送、拉取镜像指令,长期有效登录指令的有效期为永久。
- 为保证安全,获取登录指令过程建议在开发环境执行。
- 用户登录IAM控制台前,请确保已具有IAM服务访问权限,授权方式请参考创建用户组并授权。
获取docker容器引擎长期有效登录指令
您可以按照以下流程获取长期有效登录指令。
操作步骤如下:
- 获取编程访问权限。(如果当前用户已有编程访问权限,请忽略此步骤)
- 以管理员身份,登录管理控制台。
- 在管理控制台左上角单击,选择区域和项目。
- 单击左侧导航栏,选择“管理与监管”>“统一身份认证服务IAM”。
- 在“用户”页搜索框输入并搜索要授予编程访问权限的用户名称。
图2 用户列表
- 单击用户名称,进入用户详情页。
- 单击“访问方式”后面的按钮。
图3 修改访问方式
- 勾选“编程访问”选项。(可单独勾选编程访问,也可以2种访问方式同时勾选。)
图4 修改访问方式
- 获取区域项目名称、镜像仓库地址。
- 获取AK/SK访问密钥。
访问密钥即AK/SK(Access Key ID/Secret Access Key),表示一组密钥对,用于验证调用API发起请求的访问者身份,与密码的功能相似。如果您已有AK/SK,可以直接使用,无需再次获取。
- 登录IAM管理控制台,将鼠标移到用户名处,单击“我的凭证”。
- 在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”。
- 输入描述信息,单击“确定”。
- 在弹出的提示页面单击“立即下载”。
下载成功后,在“credentials”文件中即可获取AK和SK信息。
表1 credentials文件示例 User Name
Access Key Id
Secret Access Key
a*****
RVHVMX******
H3nPwzgZ******
为防止访问密钥泄露,建议您将其保存到安全的位置。
- 登录一台Linux系统的计算机,执行如下命令获取登录密钥。
printf "AK" | openssl dgst -binary -sha256 -hmac "SK" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
请将AK替换为步骤3credentials文件的Access Key Id,SK替换为步骤3credentials文件的Secret Access Key。
示例:
printf "RVHVMX******" | openssl dgst -binary -sha256 -hmac "H3nPwzgZ******" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
执行上面的命令后,我们得到的登录密钥如下:
cab4ceab4a1545***************
以上密钥仅为示例,请以实际获得的密钥为准。
- 使用如下的格式拼接登录指令。
docker login -u [区域项目名称]@[AK] -p [登录密钥] [镜像仓库地址]
其中,区域项目名称和镜像仓库地址在2中获取,AK在3中获取,登录密钥为4的执行结果。
示例:
docker login -u cn-north-4@RVHVMX****** -p cab4ceab4a1545*************** swr.cn-north-4.myhuaweicloud.com
当显示“Login Succeeded”,即为登录成功。
- 登录密钥字符串是经过加密的,无法逆向解密,从-p无法获取到SK。
- 获取的登录指令可在其他机器上使用并登录。
- (可选)当您退出仓库时,请使用以下命令删除您的认证信息。
cd /root/.docker/ rm -f config.json
- (可选)使用history -c命令清理相关使用痕迹,避免隐私信息泄露。
获取containerd容器引擎长期有效的拉取、推送镜像指令
- 参考获取docker容器引擎的长期有效登录指令中的步骤1设置编程访问权限。
- 参考获取docker容器引擎的长期有效登录指令中的步骤2至步骤4获取资源空间名、镜像仓库地址、AK以及登录密钥信息。
- 使用如下的格式拼接长期拉取和推送镜像的指令。
1. 镜像拉取指令拼接
ctr image pull --user [资源空间名]@[AK]:[登录密钥] [镜像仓库地址]
其中,资源空间名和镜像仓库地址在2中获取,AK在3中获取,登录密钥为4的执行结果。
2. 镜像推送指令拼接
ctr image push --user [资源空间名]@[AK]:[登录密钥] [镜像仓库地址]
其中,资源空间名和镜像仓库地址在2中获取,AK在3中获取,登录密钥为4的执行结果。
- 登录密钥字符串是经过加密的,无法将登录密钥字符串逆向解密成SK。
- 获取的指令可在其他机器上使用并进行镜像上传下载。