Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:docker:registry_server [2026/02/25 21:49] ingo_wichmann |
admin_grundlagen:docker:registry_server [2026/06/02 08:29] (aktuell) peter_rossbach2 [Image zu Registry übertragen] |
||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ===== Registry starten ===== | ===== Registry starten ===== | ||
| Ohne TLS und Passwort sollte sie nicht öffentlich erreichbar gemacht werden. (( https://distribution.github.io/distribution/about/deploying/ )) | Ohne TLS und Passwort sollte sie nicht öffentlich erreichbar gemacht werden. (( https://distribution.github.io/distribution/about/deploying/ )) | ||
| + | |||
| + | ip a s eth1 | ||
| + | export PRIVATE_INTERFACE=eth1 | ||
| + | echo 'export PRIVATE_INTERFACE=eth1' >> ~/.bashrc | ||
| + | export PRIVATE_IP4=$(/sbin/ip -o -4 addr list ${PRIVATE_INTERFACE} | awk '{print $4}' | cut -d/ -f1) | ||
| + | echo 'export PRIVATE_IP4=$(/sbin/ip -o -4 addr list ${PRIVATE_INTERFACE} | awk '{print $4}' | cut -d/ -f1)' >> ~/.bashrc | ||
| docker run -d \ | docker run -d \ | ||
| - | -p 5000:5000 \ | + | -p $PRIVATE_IP4:5000:5000 \ |
| --restart=always \ | --restart=always \ | ||
| --name registry \ | --name registry \ | ||
| Zeile 10: | Zeile 16: | ||
| ===== dockerd für Registry konfigurieren ===== | ===== dockerd für Registry konfigurieren ===== | ||
| + | ++++ Podman | | ||
| + | <file toml /etc/containers/registries.conf.d/20-local-registry.conf> | ||
| + | [[registry]] | ||
| + | location = "192.168.122.103:5000" | ||
| + | insecure = true | ||
| + | </file> | ||
| + | Prüfen: | ||
| + | podman info --format json | jq '.registries."192.168.122.103:5000"' | ||
| + | -> sollte die lokale Registry anzeigen | ||
| + | |||
| + | ++++ | ||
| <file json /etc/docker/daemon.json> | <file json /etc/docker/daemon.json> | ||
| Zeile 17: | Zeile 34: | ||
| } | } | ||
| </file> | </file> | ||
| + | |||
| + | ip a s eth1 | ||
| + | |||
| + | Bitte die PRIVATE IP eintragen... | ||
| + | |||
| + | <file json /etc/docker/daemon.json> | ||
| + | { | ||
| + | … | ||
| + | "insecure-registries": […, "10.97.7.11:5000", "ingo-1.lxht.de:5000"] | ||
| + | } | ||
| + | </file> | ||
| + | |||
| + | |||
| systemctl restart docker.service | systemctl restart docker.service | ||
| + | prüfen: (( Doku zu [[https://pkg.go.dev/text/template|GO templates]] )) | ||
| + | docker info --format '{{(index .RegistryConfig.IndexConfigs "registry.notebook36.linuxhotel.de:5000").Secure}}' | ||
| + | -> sollte ''false'' (=insecure) ausgeben | ||
| ===== Image zu Registry übertragen ===== | ===== Image zu Registry übertragen ===== | ||
| docker image tag ingo/debian:trixie registry.notebook36.linuxhotel.de:5000/ingo/debian:trixie | docker image tag ingo/debian:trixie registry.notebook36.linuxhotel.de:5000/ingo/debian:trixie | ||
| docker image push registry.notebook36.linuxhotel.de:5000/ingo/debian:trixie | docker image push registry.notebook36.linuxhotel.de:5000/ingo/debian:trixie | ||
| + | Abfragen, ob das Image angekommen ist: | ||
| + | curl http://registry.notebook36.linuxhotel.de:5000/v2/_catalog | ||
| + | curl http://$PRIVATE_IP4:5000/v2/_catalog | ||
| + | docker manifest inspect --insecure $PRIVATE_IP4:5000/ingo/debian:trixie | ||
| + | curl -s \ | ||
| + | http://$PRIVATE_IP4:5000/v2/ingo/debian/tags/list | jq | ||
| + | |||
| + | ==== Reference Registry Tools ===== | ||
| + | |||
| + | - [[https://github.com/oras-project/oras|ORAS]] | ||
| + | - [[https://github.com/podman-container-tools/skopeo|Skopeo]] | ||
| + | - [[https://github.com/regclient/regclient|Regclient]] | ||
| + | |||
| + | |||
| + | ++++ Reg UI | | ||
| + | - [[https://github.com/Joxit/docker-registry-ui|docker-registry-ui]] | ||
| + | |||
| + | <code bash> | ||
| + | docker run -d -p 8080:80 --name reg-ui \ | ||
| + | --env REGISTRY_URL=http://$PRIVATE_IP4:5000 \ | ||
| + | joxit/docker-registry-ui:latest | ||
| + | </code> | ||
| + | |||
| + | ++++ | ||