Verwaltung privater Docker-Repositorys und Löschen von Bildern in lokalen Repositorys

Verwaltung privater Docker-Repositorys und Löschen von Bildern in lokalen Repositorys

1: Installation eines privaten Docker-Warehouses

1. Laden Sie das Bild aus dem Bild-Repository herunter:

[root@localhost ~]# systemctl starte Docker

#Wenn bereits ein Bild vorhanden ist, können Sie das Löschen des Originalbilds wie folgt erzwingen:
[root@xxx-pub /]# docker rmi -f docker.io/registry
Ohne Tag: docker.io/registry:latest
Ohne Tag: docker.io/registry@sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
[root@xxx-pub /]#

#Starten Sie den Download des neuesten Bildes.
[root@localhost ~]# Docker-Pull-Registrierung
Standard-Tag verwenden: latest
aktuell: Aus Bibliothek/Registrierung ziehen
4064ffdc82fe: Pull abgeschlossen 
c12c92d1c5a2: Ziehen abgeschlossen 
4fbc9b6835cc: Ziehen abgeschlossen 
765973b0f65f: Ziehen abgeschlossen 
3968771a7c3a: Ziehen abgeschlossen 
Zusammenfassung: sha256:20bbbc0f6384cf7dc6e292ccbe75935b73c92ec776543c970904bc60feceb129
Status: Neueres Image für Registry:latest heruntergeladen
[root@localhost ~]

2. Starten Sie das Image-Repository und mounten Sie es auf der lokalen Festplatte:

[root@xxx-pub /]# docker run -d -v /registry:/home/docker-registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
Das Bild „registry:latest“ kann lokal nicht gefunden werden.
Es wird versucht, das Repository docker.io/library/registry abzurufen ... 
aktuell: Abrufen von docker.io/library/registry
Zusammenfassung: sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
Status: Neueres Image für docker.io/registry:latest heruntergeladen
b7bd2b14ed488936afe798be95f3cd56f604fb092d45cf6f4a58359bcad0d34c
[root@xxx-pub /]#
  • -v /registry:/home/docker-registry: Standardmäßig wird das Repository im Verzeichnis /home/docker-registry im Container gespeichert und das angegebene lokale Verzeichnis wird im Container gemountet.
  • -p 5000:5000: Portzuordnung. Das heißt, der lokale Port 5000 wird dem Port 5000 in der Registrierung zugeordnet.
  • –restart=always1: Den Container immer neu starten, wenn er beendet wird. Wird hauptsächlich in Produktionsumgebungen verwendet.
  • –privileged=true: Das Sicherheitsmodul selinux in CentOS7 deaktiviert Berechtigungen. Der Parameter fügt dem Container Berechtigungen hinzu. Wenn Sie beim Hochladen des Images keine Berechtigungen hinzufügen, wird ein ähnlicher Berechtigungsfehler gemeldet. OSError: [Errno 13] Berechtigung verweigert: '/tmp/registry/repositories/liibrary') oder (Unerwarteter HTTP-Status empfangen: 500 Interner Serverfehler)
  • –name registry: Gibt den Namen des Containers an.

Um Daten zu speichern, mounten Sie das Volume in /home/docker-registry

3. Wir taggen ein lokales Bild und laden es hoch:

Prüfen Sie, welche lokalen Bilder verfügbar sind:

[root@xxx-pub /]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
docker.io/centos centos7.5.1804 fdf13fa91c6e vor 4 Wochen 200 MB
docker.io/registry latest b2b03e9146e1 vor 2 Monaten 33,3 MB
[root@xxx-pub /]#

Nehmen Sie docker.io/centos als Beispiel.

[root@xxx-pub /]# Docker-Tag fdf13fa91c6e localhost:5000/xxx-centos7.5.1804:1.0
##localhost:5000 steht für die Lageradresse, fdf13fa91c6e steht für die Bild-ID, xxx-centos7.5.1804 steht für den Bildnamen und 1.0 steht für die Versionsnummer.

oder:
[root@xxx-pub /]# Docker-Tag docker.io/centos:centos7.5.1804 localhost:5000/xxx-centos7.5.1804:1.0

4. Direkter Upload:

[root@xxx-pub /]# docker push localhost:5000/xxx-centos7.5.1804:1.0
Der Push bezieht sich auf ein Repository [localhost:5000/xxx-centos7.5.1804]
bcc97fbfc9e1: Geschoben 
1.0: Digest: sha256:7c14180942615fef85cb5c8b1388e028be1a8f79694a5fa30a4025173e42ad61 Größe: 529
[root@xxx-pub /]#

Während des PUSH-Vorgangs wird möglicherweise ein Fehler ähnlich dem folgenden gemeldet (nachfolgend die Fehlermeldung im Internet):

[root@localhost ~]# docker push 192.168.174.128:5000/hallo:latest
Der Push bezieht sich auf ein Repository [192.168.174.128:5000/hallo]
Der Registrierungsendpunkt https://192.168.174.128:5000/v0/ kann nicht gepingt werden.
v2-Ping-Versuch fehlgeschlagen mit Fehler: Get https://192.168.174.128:5000/v2/: http: Server hat HTTP-Antwort an HTTPS-Client gegeben
 v1-Ping-Versuch ist mit folgendem Fehler fehlgeschlagen: Get https://192.168.174.128:5000/v1/_ping: http: Server hat HTTP-Antwort an HTTPS-Client gegeben
[root@localhost ~]

Lösung:

Ändern Sie mithilfe von https die Datei /etc/sysconfig/docker (hier ist der Docker unter Centos7) und fügen Sie ADD_REGISTRY='--add-registry 192.168.18.162:5000', INSECURE_REGISTRY='--insecure-registry 192.168.18.162:5000' hinzu (das Obige ist die Konfiguration der historischen Docker-Version), wie unten gezeigt:

Allerdings wird in der Konfiguration des neuen Docker Container Repository die Konfiguration im eigenen Docker Container übernommen (sowohl in der Docker Registry als auch auf der Maschine wo das weitere Pull Image gezogen wird wird hier folgende Konfiguration angegeben):

Nachdem die Spezifikation abgeschlossen ist, starten Sie Docker neu. Die Neustartkonfiguration lautet wie folgt:

[root@youx-pub volumes]# systemctl restart docker

Zusätzlich: Überprüfen Sie docker.service und die Konfigurationsdatei:

[root@youx-pub-Registrierung] suchen / -name docker.service
/sys/fs/cgroup/memory/system.slice/docker.service
/sys/fs/cgroup/devices/system.slice/docker.service
/sys/fs/cgroup/blkio/system.slice/docker.service
/sys/fs/cgroup/cpu,cpuacct/system.slice/docker.service
/sys/fs/cgroup/pids/system.slice/docker.service
/sys/fs/cgroup/systemd/system.slice/docker.service
/usr/lib/systemd/system/docker.service
[root@youx-pub-Registrierung]# vim /usr/lib/systemd/system/docker.service 


Führen Sie dann Folgendes aus:

#Da sich die Datei docker.service, die für den Systemctl-Start verwendet werden kann, geändert hat, muss die folgende Konfiguration durchgeführt werden. Führen Sie dann den Docker-Neustart aus, um systemctl daemon-reload zu starten.
systemctl Neustart Docker

Wenn der folgende Fehler weiterhin gemeldet wird:

[root@youx-pub-Registrierung]# Docker Push 192.168.18.162:5000/nginx:1.2
Der Push verweist auf ein Repository [192.168.18.162:5000/nginx]
Holen Sie sich https://192.168.18.162:5000/v1/_ping: http: Server hat HTTP-Antwort an HTTPS-Client gegeben
[root@youx-pub-Registrierung]

Die Lösung ist:

Erstellen Sie daemon.json unter /etc/docker mit folgendem Inhalt:

{"unsichere-registries":["192.168.18.162:5000"]}

Starten Sie dann den Docker-Container neu:

[root@youx-pub volumes]# systemctl restart docker

5. Nachdem der Upload abgeschlossen ist, können wir überprüfen, ob sich im gemounteten Verzeichnis ein Image befindet:

[root@xxx-pub Docker-Registrierung]# pwd
/home/docker-registrierung
[root@xxx-pub Docker-Registrierung] # ls /Registrierung/
Docker

6. Informationen zum Anzeigen lokaler Bilder:

[root@xxx-pub Docker-Registrierung]# curl http://192.168.18.162:5000/v2/_catalog
{"Repositorys":["xxx-centos7.5.1804","xxx-centos7.5.1804-v1.0"]}
[root@xxx-pub Docker-Registrierung]

7. Da es zwei Bilder gibt, müssen wir deren Tag-Informationen zum Herunterladen abrufen:

[root@xxx-pub Docker-Registrierung]# curl http://192.168.18.162:5000/v2/xxx-centos7.5.1804/tags/list
{"name":"xxx-centos7.5.1804","tags":["1.0"]}
[root@xxx-pub Docker-Registrierung]

8. Anschließend laden wir das Image direkt (auf einen anderen Rechner) herunter:

[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0
Standard-Tag verwenden: latest
Es wird versucht, das Repository 192.168.18.162/youx-centos7.5.1804 abzurufen ... 
Holen Sie sich https://192.168.18.162/v1/_ping: wählen Sie TCP 192.168.18.162:443: getsockopt: keine Route zum Host
[root@bigdata2 ~]#

Wenn die oben beschriebene Situation eintritt, lautet die Lösung:

Kompilieren:

[root@youx-pub volumes]# vim /etc/containers/registries.conf diese Datei.
Die alte ist zu bearbeiten: /etc/sysconfig/docker


Starten Sie dann Docker neu

[root@youx-pub volumes]# systemctl restart docker

Dann fand ich heraus, dass ich ziehen konnte

#Beachten Sie, dass die Adresse hier lautet: Lageradresse: Lagerportnummer/REPOSITORY:TAG
[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0 

Wenn es immer noch nicht funktioniert, müssen Sie /etc/docker/daemon.json ändern, der Inhalt ist wie folgt:

[root@bigdata2 docker]# cat daemon.json 
{"unsichere-registries":["192.168.18.162:5000"]}

2. Laden Sie das Image von einem anderen Computer in das Docker-Image-Repository hoch:

[root@bigdata2 ~]# Docker-Tag centos7-jdk8-nginx:1.0 192.168.18.162:5000/centos7-jdk8-nginx:1.0
[root@bigdata2 ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
192.168.18.162:5000/centos7-jdk8-nginx 1.0 bcacd65e2a2e vor 2 Minuten 2,18 GB

[root@bigdata2 ~]# docker push 192.168.18.162:5000/centos7-jdk8-nginx:1.0
Der Push verweist auf ein Repository [192.168.18.162:5000/centos7-jdk8-nginx]
f018e9c38a66: Geschoben 
2a47dcd341ef: Geschoben 
c5dea3bc729a: Geschoben 
bcc97fbfc9e1: Geschoben 
1.0: Digest: sha256:d907ff2f8eb590209700c01ce85c78d0bc778a4238539d747e4667d68cb52102 Größe: 1163
[root@bigdata2 ~]

Geben Sie dann den Speicherort des Docker-Image-Warehouses ein:

[root@youx-pub-Registrierung]# curl http://192.168.18.162:5000/v2/_catalog
{"Repositorys":["centos7-jdk8-nginx","nginx"]}
[root@youx-pub-Registrierung]# curl http://192.168.18.162:5000/v2/centos7-jdk8-nginx/tags/list
{"name":"centos7-jdk8-nginx","tags":["1.0"]}
[root@youx-pub-Registrierung]

3. Wie lösche ich das lokale Bild? Normalerweise ist die Löschfunktion nicht vorhanden, daher wird zum Löschen ein Plug-In eines Drittanbieters verwendet.

Der Speicherort des Plugins auf GitHub:
https://github.com/burnettk/delete-docker-registry-image

1. Ressourcen herunterladen

[root@master-Registrierung]# curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null

sudo chmod a+x /usr/local/bin/delete_docker_registry_image 

2. Relevante Linkvariablen festlegen:

Suchen Sie nach REGISTRY_DATA_DIR, Befehl:
[root@youx-pub-Registrierung]# finden / -name-Registrierung
[root@youx-pub-Registrierung]# finden / -name-Registrierung
/var/lib/docker/overlay2/d72320cd67b42f7ae66342cc6dedab7abe5e89106de8c4919ec8c5a6e5940b09/diff /var/lib/ucf/registrierung
/var/lib/docker/overlay2/92211417089f7be8239def550e1e89ce3f0e50ac57f2c36ba723ca312ea06ae3/diff/bin/registry
/var/lib/docker/overlay2/c1716aea0b380eb94ead9aa02552769acd4c3dac8e6dab735997f1709ce79a33/diff/usw./docker/registrierung
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/diff/var/lib/registrierung
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/zusammengeführt/bin/registry
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/zusammengeführt/usw./docker/registry
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/zusammengeführt/var/lib/registry
/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry
/opt/data/registry
/Registrierung
[root@youx-pub-Registrierung]
[root@youx-pub-Repositorys] gefunden# pwd
/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2/repositories
[root@youx-pub-Repositorys]# ls
centos7-jdk8-nginx nginx
[root@youx-pub-Repositorys]#

Legen Sie daher den Speicherort des Bild-Repositorys fest auf:
[root@master-Registrierung]# export REGISTRY_DATA_DIR=/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2

Die Adresse ist unsere Mount-Adresse:

Schauen Sie sich die zugehörigen Tags an:

[root@youx-pub-Registrierung]# curl http://192.168.18.162:5000/v2/_catalog
{"Repositorys":["youx-centos7.5.1804","youx-centos7.5.1804-v1.0"]}
[root@youx-pub-Registrierung]# curl http://192.168.18.162:5000/v2/youx-centos7.5.1804-v1.0/tags/list
{"name":"youx-centos7.5.1804-v1.0","tags":["neueste"]}
[root@youx-pub-Registrierung]

Wir können es im Anschluss direkt löschen:

[root@master-Registrierung]# delete_docker_registry_image --image youx-centos7.5.1804-v1.0:latest

INFO [2017-04-08 11:39:39,793] Löschen von /registry/docker/registry/v2/repositories/nginx/_manifests/tags/v1
Schauen wir uns die Spiegelbilder des lokalen Lagers an:

[root@master-Registrierung]# curl http://192.168.18.162:5000/v2/_catalog
{"Repositorys":["youx-centos7.5.1804"]}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • .NETCore Docker implementiert Containerisierung und privates Image-Repository-Management
  • Analyse der Docker-Methode zum Erstellen lokaler Images
  • Beschreiben Sie kurz, wie Sie das Tomcat-Image installieren und das Webprojekt in Docker bereitstellen
  • Die einfachste Implementierung eines Docker-Images zum Verpacken von Spring Boot
  • So generieren Sie ein Docker-Image und schließen die Containerbereitstellung in einem Spring-Boot-Projekt ab
  • So stellen Sie ein Vue-Projekt mit Docker-Image + nginx bereit
  • Detaillierte Erläuterung des neuesten IDEA-Prozesses zum schnellen Bereitstellen und Ausführen von Docker-Images
  • Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository
  • Codebeispiele für allgemeine Vorgänge bei der Docker-Image-Verwaltung

<<:  Detaillierte Erläuterung des Cache-Implementierungsprinzips von Vue-Berechnungen

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.19 (Win10)

Artikel empfehlen

SSH-Portweiterleitung zur Erzielung einer Intranet-Penetration

Die Maschinen in unserem LAN können auf das exter...

Warum gibt es das in JS?

Inhaltsverzeichnis 1. Nachfrage 2. Lösung 3. Die ...

Front-End-JavaScript-Housekeeper-Paket.json

Inhaltsverzeichnis 1. Erforderliche Attribute 1. ...

Ein Artikel zum Verständnis von MySQL Index Pushdown (ICP)

Inhaltsverzeichnis 1. Einleitung 2. Grundsatz Pra...

Detaillierte Erklärung der Verwendung des Linux-Befehls nslookup

[Wer ist nslookup?] 】 Der Befehl nslookup ist ein...

MySql schnelles Einfügen von zig Millionen großen Datenbeispielen

Im Bereich der Datenanalyse sind Datenbanken unse...

Wie gut kennen Sie sich mit reinen HTML-Tags aus?

Die folgenden HTML-Tags umfassen grundsätzlich all...

So stellen Sie Node.js mit Docker bereit

Vorwort Node wird als mittlere Schicht im Projekt...

Vue+Element UI realisiert die Kapselung von Dropdown-Menüs

In diesem Artikelbeispiel wird der spezifische Co...