Die folgenden Hinweise zu veralteten Versionen haben Auswirkungen auf Container Registry. Weitere Informationen finden Sie auch in den Hinweisen zu verworfenen Versionen und im entsprechenden Änderungslog von Docker.
Docker Registry-API Version 1 und Versionen des Docker-Clients unter Version 1.6
Am 14. Dezember 2016 gaben wir bekannt, dass Docker Engine mit dem Release von Docker v1.13 ab dem 28. Februar 2017 das v1-Protokoll nicht mehr unterstützt.
Deshalb unterstützt Container Registry Docker-Clients unter Version 1.6 nicht mehr. Seit dem 28. Februar 2017 können Docker-Clients unter Version 1.6 nicht mehr mit der Container Registry API kommunizieren und Container-Images im v1-Protokoll, die in Container Registry gespeichert sind, können nicht mehr verwendet werden.
So können Sie feststellen, ob sich diese Änderung auf Ihre Images auswirkt:
Prüfen Sie mit dem folgenden Befehl, welche Docker-Clientversion Sie verwenden:
gcloud docker -- --version
Wenn Ihre Clientversion älter ist als Version 1.6, müssen Sie Ihren Docker-Client aktualisieren. Dann müssen Sie Ihre Images auf das Docker Registry v2-Protokoll aktualisieren.
Laden Sie ein betroffenes v1-Image herunter:
gcloud docker -- pull gcr.io/[PROJECT-ID]/[IMAGE]
Laden Sie das Image noch einmal hoch:
gcloud docker -- push gcr.io/[PROJECT-ID]/[IMAGE]
Weitere Informationen zu den v1- und v2-Protokollen von Docker Registry finden Sie unter Container Image-Formate.
Nicht standardmäßige Container Registry-Buckets
Am 28. Februar 2017 wurde die Verwendung von "Bring-Your-Own-Bucket"-Registrys wie b.gcr.io
und bucket.gcr.io
eingestellt. Container Registry stellt keine Container-Images mehr bereit, die in diesen Buckets gehostet werden.
Wenn Sie Ihre Images weiterhin verwenden möchten, müssen Sie sie in einen Container Registry-Standardstandort wie gcr.io
, us.gcr.io
, asia.gcr.io
oder eu.gcr.io
verschieben.
So migrieren Sie Ihre Container-Images von einem nicht standardmäßigen Bucket in einen standardmäßigen Bucket:
Rufen Sie die Images aus dem nicht standardmäßigen Bucket ab:
gcloud docker -- pull b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG]
Taggen Sie die Images noch einmal mit einem standardmäßigen Registry-Speicherortnamen:
gcloud docker -- tag b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
Laden Sie das Image wieder in Container Registry hoch (mit einem Docker-Client ab Version 1.6) und verwenden Sie dabei die Zielprojekt-ID:
gcloud docker -- push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
Container-Image-Metadatenspeicheränderung
Seit dem 28. Februar 2017 wird für Container Registry ein anderer Speicherort für Containerdateien mit Image-Metadaten verwendet. Unter Image-Metadaten versteht man Daten wie den Image-Namen, Image-Tags und Image-Manifeste, die die Layer-Dateien (nach Digest) identifizieren, aus denen ein Image besteht.
Diese Änderung kann Sie betreffen, wenn Sie die Metadatendateien direkt in Ihrem Cloud Storage-Bucket öffnen oder verändern. Dazu gehört das Management des Änderungsverlaufs oder des Objektlebenszyklus zum Löschen.
Beim Hochladen von Images auf Container Registry speicherte die Container Registry-API früher die Metadaten- und Layer-Dateien für die Images in einem Cloud Storage-Bucket in Ihrem Projekt. Seit dem 28. Februar 2017 speichert Container Registry Image-Metadaten in einer leistungsstarken Back-End-Datenbank, um Leistung und Funktionalität zu verbessern. Die Image-Layer-Dateien werden weiterhin in Cloud Storage gespeichert.
Ihrem Projekt wurde ein Container Registry-Dienstkonto mit einem Namen wie [PROJECT-NUMBER]@containerregistry.iam.gserviceaccount.com
automatisch hinzugefügt.
Durch dieses Dienstkonto wurde die neue Container Registry-API aktiviert und die Migration verwaltet. Sie dürfen dieses Dienstkonto weder löschen noch herabstufen und die neue Container Registry API nicht deaktivieren.
gcloud docker
und Docker-Clients nach Version 18.03
Ab dem 3. April 2018 wird gcloud docker
für Docker-Clientversionen nach 18.03 nicht mehr unterstützt.
Zum Authentifizieren von Anfragen an Container Registry für Clientversionen nach 18.03 müssen Sie gcloud
als Docker Credential Helper verwenden. Dazu führen Sie den folgenden Befehl aus:
gcloud auth configure-docker
Alternativ können Sie auch eine der anderen erweiterten Authentifizierungsmethoden verwenden.