image repos: herausfinden, was die Registry wirklich anbietet

"Login Succeeded" und trotzdem "unable to copy from source": der
Repository-Pfad enterprise/check-mk-enterprise war geraten, nicht
belegt. Statt weiter zu raten fragt das Werkzeug jetzt nach.

  image repos [--edition E] [--registry R] [--user/--password]

fragt zuerst /v2/_catalog ab (sperren viele Registries) und probiert
danach die ueblichen Pfade durch, je Edition und deren Aliasnamen:
  <ed>/check-mk-<ed>, check-mk-<ed>, checkmk/check-mk-<ed>,
  enterprise/check-mk-<ed>
Gemeldet wird pro Pfad der HTTP-Status samt Tag-Anzahl. Scheitert ein
"image pull" gegen eine private Registry, laeuft die Pruefung von
selbst an und zeigt gleich, was dort liegt.

Wichtig bei der Deutung und deshalb auch so beschriftet: 401 heisst
nicht "vorhanden". Docker Hub antwortet auch auf nicht existierende
Repositories mit 401. Verlaesslich sind nur 200 und 404.

Nebenbei am Versionsarchiv geklaert, dass die Editionsumbenennung erst
mit 2.5 greift:
  2.4.0p9  -> check-mk-{raw,enterprise,cloud,managed}-docker-...
  2.5.0p13 -> check-mk-{community,pro,ultimate,ultimatemt}-docker-...
Fuer 2.4 ist "--edition enterprise" also richtig.

registry_get_token nimmt jetzt einen frei waehlbaren Scope, damit auch
registry:catalog:* angefordert werden kann.

Gegen Docker Hub verifiziert: findet checkmk/check-mk-raw (2394 Tags)
und checkmk/check-mk-community (534 Tags); gegen registry.checkmk.com
ohne Zugangsdaten sauberer Fehlbericht statt Haenger.

Dokumentiert als Abschnitt 8.8 in beiden Sprachfassungen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 17:19:54 +02:00
co-authored by Claude Opus 5
parent 7b26042fa4
commit f8a8c7a2a6
3 changed files with 212 additions and 6 deletions
+40 -1
View File
@@ -943,7 +943,45 @@ Compose und die systemd-Units verwenden ausschliesslich CMK_IMAGE.
Aus einem Tarball geladene Images (`localhost/…`) gelten dabei als stimmig,
solange Name und Tag passen.
### 8.8 Nachsehen, was gilt
### 8.8 Registry-Pfad herausfinden
„Login Succeeded" heisst noch nicht, dass der Pfad stimmt. Meldet der Pull
`unable to copy from source docker://…`, existiert das Repository unter diesem
Namen nicht oder die Subskription deckt es nicht ab:
```bash
./scripts/cmk-manage.sh image repos --edition enterprise
```
Das fragt zuerst den Katalog (`/v2/_catalog`) ab – den sperren allerdings viele
Registries – und probiert danach die üblichen Pfade durch:
```
Uebliche Pfade fuer "raw" durchprobiert
STATUS TAGS PFAD
200 = nutzbar, 404 = gibt es nicht, 401/403 = kein Zugriff
401 - raw/check-mk-raw (kein Zugriff - oder gibt es nicht)
200 2394 checkmk/check-mk-raw
...
[ OK ] Nutzbar: docker.io/checkmk/check-mk-raw
```
Scheitert ein `image pull` gegen eine private Registry, läuft diese Prüfung
automatisch an und zeigt gleich, was dort wirklich liegt.
> **401 heisst nicht zwingend „vorhanden".** Viele Registries – Docker Hub
> zum Beispiel – antworten auch auf nicht existierende Repositories mit 401,
> um deren Existenz nicht zu verraten. Verlässlich ist nur **200 = nutzbar**
> und **404 = gibt es nicht**.
Führt kein Pfad zum Ziel, bleibt der Tarball-Weg. Er ist für Enterprise
ohnehin der dokumentierte und funktioniert unabhängig von der Registry:
```bash
./scripts/cmk-manage.sh image download --edition enterprise --version 2.4.0p9
```
### 8.9 Nachsehen, was gilt
```bash
./scripts/cmk-manage.sh image status # konfiguriertes + lokale Images
@@ -1999,6 +2037,7 @@ Checkmk-Werksnotizen (Werks/Release Notes) lesen.
| Nach Reboot laufen die Container nicht (Podman) | systemd-Unit fehlt: `./install.sh --with-systemd` bzw. `--quadlet`, danach `systemctl is-enabled checkmk-stack` |
| `omd restore`: *version is not installed* | passendes Image holen: `cmk-manage.sh image pull --edition <ed> --version <v>`, dann `up` |
| Import bricht mit Editions-Warnung ab | Enterprise-Backup benötigt ein Enterprise-Image, siehe [Kapitel 8](#8-checkmk-image-beschaffen-raw-enterprise--co) |
| `Login Succeeded`, aber Pull scheitert mit `unable to copy from source` | Der Repository-Pfad oder das Tag stimmt nicht. `cmk-manage.sh image repos --edition enterprise` zeigt, was die Registry anbietet; sonst über den Tarball gehen |
| `image not known` / Podman sucht bei `registry.access.redhat.com` | kurzer Image-Name. `CMK_IMAGE` vollqualifiziert setzen: `cmk-manage.sh image use docker.io/…` bzw. `registry.checkmk.com/enterprise/…` |
| `checkmk/check-mk-enterprise` nicht auf Docker Hub gefunden | richtig so – Enterprise liegt nur auf `registry.checkmk.com` oder als Tarball vor; ab 2.5 heißt die Edition `pro` und liegt frei auf Docker Hub |
| Tarball mit `podman import` eingespielt, Image „unbekannt“ | `import` erzeugt ein Image ohne Metadaten. Fehl-Image mit `podman rmi <id>` entfernen und `cmk-manage.sh image load --file …` verwenden (nutzt `load`) |