功能弃用

以下弃用声明会影响 Container Registry。另请参阅 Docker 的弃用声明及其changelog

低于 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 协议的容器映像都不再可用。

要了解这项更改对您的映像有何影响,请按下述步骤操作:

  1. 运行以下命令来检查您正在使用的 Docker 客户端版本:

      gcloud docker -- --version
    

    如果客户端版本低于 1.6 版本,则必须更新 Docker 客户端。然后,您必须将映像更新为 Docker Registry v2 协议。

  2. 拉取一个受影响的 v1 映像:

      gcloud docker -- pull gcr.io/[PROJECT-ID]/[IMAGE]
    
  3. 再次推送该映像:

      gcloud docker -- push gcr.io/[PROJECT-ID]/[IMAGE]
    

如需详细了解 Docker Registry 的 v1 和 v2 协议,请参阅容器映像格式

非标准 Container Registry 存储分区

2017 年 2 月 28 日,诸如 b.gcr.iobucket.gcr.io 之类的“自带存储桶”注册表已被弃用。Container Registry 不会再提供这些存储分区中托管的任何容器映像。

如需继续使用您的映像,您必须将其移动到一个标准 Container Registry 位置,例如 gcr.ious.gcr.ioasia.gcr.ioeu.gcr.io

如需将容器映像从非标准存储分区迁移到标准存储分区,请按以下步骤操作:

  1. 拉取非标准存储分区中的映像:

    gcloud docker -- pull b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG]
    
  2. 使用标准注册表位置名称重新标记这些映像:

    gcloud docker -- tag b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    
  3. 使用目标项目 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

也可以使用其他某种高级身份验证方法