3.5. 将容器镜像上传到镜像 registry
要在 air-gapped 站点中使用容器镜像,请使用以下步骤将它们上传到镜像 registry。
先决条件
-
您已登录到一个可访问
microshift-quay
的主机。 -
.pull-secret-mirror.json
文件在本地可用。 -
microshift-containers
目录内容在本地可用。
流程
运行以下命令,安装用于复制容器镜像的
skopeo
工具:$ sudo dnf install -y skopeo
设置环境变量指向 pull secret 文件:
$ IMAGE_PULL_FILE=~/.pull-secret-mirror.json
设置环境变量指向本地容器镜像目录:
$ IMAGE_LOCAL_DIR=~/microshift-containers
设置环境变量,指向镜像 registry URL 以上传容器镜像:
$ TARGET_REGISTRY=<registry_host>:<port> 1
- 1
- 将
<registry_host>
:<port> 替换为镜像 registry 服务器的主机名和端口。
运行以下命令,将容器镜像上传到
${TARGET_REGISTRY}
镜像 registry:image_tag=mirror-$(date +%y%m%d%H%M%S) image_cnt=1 # Uses timestamp and counter as a tag on the target images to avoid # their overwrite by the 'latest' automatic tagging pushd "${IMAGE_LOCAL_DIR}" >/dev/null while read -r src_manifest ; do # Remove the manifest.json file name src_img=$(dirname "${src_manifest}") # Add the target registry prefix and remove SHA dst_img="${TARGET_REGISTRY}/${src_img}" dst_img=$(echo "${dst_img}" | awk -F'@' '{print $1}') # Run the image upload command echo "Uploading '${src_img}' to '${dst_img}'" skopeo copy --all --quiet \ --preserve-digests \ --authfile "${IMAGE_PULL_FILE}" \ dir://"${IMAGE_LOCAL_DIR}/${src_img}" docker://"${dst_img}:${image_tag}-${image_cnt}" # Increment the counter (( image_cnt += 1 )) done < <(find . -type f -name manifest.json -printf '%P\n') popd >/dev/null