Skip to content

Container-Registry

registry.itsh.dev ist eine private OCI-Registry, die zu deinem Konto gehört. Jeder Client, der die Registry-API spricht, funktioniert: Docker, Podman, Buildah, Kaniko und die Build-Schritte der gängigen CI-Systeme.

Nichts darin ist öffentlich, und anonymes Lesen gibt es nicht. Ein Pull ohne Zugangsdaten scheitert sofort:

Error response from daemon: unauthorized: authentication required

Aktivieren

Geh im Portal auf Container Registry. Ist sie noch nicht aktiv, zeigt die Seite Registry aktivieren und einen zweistufigen Dialog: erst Registry-Namespace, dann Region.

Auf dem Konto muss eine Zahlungsmethode hinterlegt sein, bevor die Registry aktiviert werden kann. Ohne sie scheitert der Dialog im letzten Schritt.

Hast du einen kostenlosen Kubernetes-Namespace geholt, entfällt das alles: die Registry wurde dabei für dich aktiviert, und wenn du noch keinen Registry-Namespace gewählt hattest, bekam sie einen der Form free-<zahl>. Eine so entstandene Registry läuft mit dem harten Speicherlimit des Free Tier. Siehe Speicher und Bereinigung.

Der Registry-Namespace

Das ist nicht dein Kubernetes-Namespace

Im Portal heißt das Feld Registry-Namespace, und es ist genau das Segment, das in jedem Image-Pfad steht: registry.itsh.dev/<dein-slug>/<image>:<tag>. Trotz des Namens hat es nichts mit deinem Kubernetes-Namespace zu tun. Setzt du tenant-<zahl> ein, bekommst du einen ImagePullBackOff.

Was das Feld akzeptiert:

  • Nur Kleinbuchstaben, Ziffern und Bindestriche
  • 3 bis 40 Zeichen
  • Muss mit einem Buchstaben oder einer Ziffer beginnen und enden

Eine Handvoll Namen ist reserviert und wird als bereits vergeben gemeldet: admin, api, registry, system, root, itsh, support, www, mail, ftp, ssh und test.

Mit dem ersten Push friert der Namespace ein

Sobald ein Image darunter liegt, lässt sich der Registry-Namespace nicht mehr ändern, und das Portal antwortet mit Der Namespace kann nicht mehr geändert werden, weil bereits Images darunter gespeichert sind. Das ist Absicht: Images werden über dieses Präfix adressiert, eine Umbenennung würde also jedes vorhandene Image weder unter dem alten noch unter dem neuen Namen erreichbar lassen und die Pull-Secrets zerlegen, die darauf verweisen. Nimm den Namen, bei dem du bleiben willst, bevor du pushst.

Region wählen

Das Regionsfeld verschiebt deine Images nicht

Der zweite Schritt bietet drei Regionen an. Der Wert wird an deiner Registry gespeichert und lässt sich danach nicht mehr ändern, aber der Registry-Speicher ist heute nicht nach Region getrennt: die Images liegen in Deutschland, egal welche Option du wählst.

Dein erster Push

Leg zuerst unter dem Tab Zugriffs-Token einen Token an. Der Benutzername ist dein Registry-Namespace, das Passwort ist der Token:

bash
echo '<token>' | docker login registry.itsh.dev -u <dein-slug> --password-stdin
docker tag my-image:latest registry.itsh.dev/<dein-slug>/my-image:1.0.0
docker push registry.itsh.dev/<dein-slug>/my-image:1.0.0

Repositories legst du nicht vorher an. Der erste Push auf einen Namen erzeugt das Repository, danach taucht es auf dem Tab Übersicht unter Repositories auf, mit Größe und Pull-Zahl. Öffne es, um seine Tags zu sehen. Das Portal listet Repositories ohne das Präfix <dein-slug>/, ein als registry.itsh.dev/<dein-slug>/my-image gepushtes Repository steht dort also als my-image.

Pushes und Pulls funktionieren nur unter deinem eigenen Präfix. Ein Pfad, der mit dem Registry-Namespace von jemand anderem beginnt, wird als unauthorized abgewiesen, auch wenn du angemeldet bist: deine Zugangsdaten tragen nie Zugriff auf etwas außerhalb deines eigenen Präfix.

Wie es weitergeht