以下弃用声明会影响 Container Registry。另请参阅 Docker 的弃用声明 及其更新日志。
低于 1.6 版本的 Docker Registry v1 API 和 Docker 客户端
我们已于 2016 年 12 月 14 日宣布,自 2017 年 2 月 28 日起,随着 Docker v1.13 的发布,Docker Engine 不再支持 v1 协议。
因此,Container Registry 不再支持低于 1.6 版本的 Docker 客户端。2017 年 2 月 28 日之后,低于 1.6 版本的 Docker 客户端无法与 Container Registry API 通信,并且 Container Registry 中存储的采用 v1 协议的容器映像都不再可用。
要了解这项更改对您的映像有何影响,请按下述步骤操作:
运行以下命令来检查您正在使用的 Docker 客户端版本:
gcloud docker -- --version
如果客户端版本低于 1.6 版本,则必须更新 Docker 客户端。然后,您必须将映像更新为 Docker Registry v2 协议。
拉取一个受影响的 v1 映像:
gcloud docker -- pull gcr.io/[PROJECT-ID]/[IMAGE]
再次推送该映像:
gcloud docker -- push gcr.io/[PROJECT-ID]/[IMAGE]
如需详细了解 Docker Registry 的 v1 和 v2 协议,请参阅容器映像格式。
非标准 Container Registry 存储分区
2017 年 2 月 28 日,诸如 b.gcr.io
和 bucket.gcr.io
之类的“自带存储桶”注册表已被弃用。Container Registry 不会再提供这些存储分区中托管的任何容器映像。
如需继续使用您的映像,您必须将其移动到一个标准 Container Registry 位置,例如 gcr.io
、us.gcr.io
、asia.gcr.io
或 eu.gcr.io
。
如需将容器映像从非标准存储分区迁移到标准存储分区,请按以下步骤操作:
拉取非标准存储分区中的映像:
gcloud docker -- pull b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG]
使用标准注册表位置名称重新标记这些映像:
gcloud docker -- tag b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
使用目标项目 ID 将映像重新推送到 Container Registry(使用 Docker 客户端版本 1.6 或更高版本):
gcloud docker -- push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
容器映像元数据存储变更
从 2017 年 2 月 28 日起,Container Registry 存储容器映像元数据文件的位置发生了变化。映像元数据是指诸如映像名称、映像标记和映像清单之类的信息,这些信息用于标识包含映像的图层文件(按 digest)。
如果您直接访问或处理 Cloud Storage 存储分区中的元数据文件(例如,访问更改历史记录或对象生命周期管理以执行删除操作),那么此项更改可能会对您产生影响。
以前,当您将映像推送到 Container Registry 时,Container Registry API 会将这些映像的元数据和图层文件存储在项目的一个 Cloud Storage 存储分区中。从 2017 年 2 月 28 日起,Container Registry 会将映像元数据存储在高性能后端数据库中,这将有助于提升性能和功能。映像图层文件仍存储在 Cloud Storage 中。
Container Registry 服务账号会自动添加到您的项目中,其名称类似于 [PROJECT-NUMBER]@containerregistry.iam.gserviceaccount.com
。此服务账户会激活新的 Container Registry API 并管理迁移。请勿删除或降级此服务账号,也不要取消激活新的 Container Registry API。
gcloud docker 命令和高于 18.03 版本的 Docker 客户端
从 2018 年 4 月 3 日起,高于 18.03 版本的 Docker 客户端版本不支持 gcloud docker
。
对于高于 18.03 版本的客户端,如需对向 Container Registry 发出的请求进行身份验证,请使用 gcloud
作为 Docker 凭据帮助程序。为此,请运行以下命令:
gcloud auth configure-docker
也可以使用其他某种高级身份验证方法。