So bauen Sie ein privates Docker-Lagerhaus
1. Hintergrundeinführung
Wenn wir in Docker den Befehl docker pull xxx ausführen, fragen wir uns vielleicht, wohin Docker geht, um das Bild zu finden und herunterzuladen.
Verwandte Empfehlungen: Docker-Tutorial
Antwort auf die Frage:
Es ist tatsächlich das öffentliche Lager, das von der Firma Docker bereitgestellt wird Sie können alle erreichbar und nutzbar. Daher können wir auch die Warehouse-Adresse verwenden, um das Image abzurufen, z. B.: docker pull Registry.hub.docker.com/library/alpine. Beachten Sie jedoch, dass der Standardname des auf diese Weise heruntergeladenen Images länger ist.
Wenn wir Docker im Unternehmen verwenden möchten, ist es für uns grundsätzlich unmöglich, kommerzielle Projekte in ein öffentliches Lager hochzuladen. Was können wir also tun, wenn wir es mit mehreren Maschinen teilen möchten?
Aufgrund dieses Bedarfs kommen private Lagerhäuser ins Spiel.
Das sogenannte private Lagerhaus ist so etwas wie ein lokal gebautes öffentliches Lagerhaus (LAN). Nach dem Bau können wir das Bild an das private Lagerhaus übermitteln. Auf diese Weise können wir Docker verwenden, um unsere Projekt-Images auszuführen und das Risiko zu vermeiden, dass kommerzielle Projekte offengelegt werden.
Im Folgenden verwenden wir das offizielle Registry-Image, um ein privates Image-Warehouse zu erstellen. Natürlich gibt es noch viele andere Methoden.
2. Umgebung
Bereiten Sie zwei Server mit installiertem Docker vor: Servermaschine (Hostname ist Registrierung): privater Docker-Warehouse-Server, auf dem der Registrierungscontainer ausgeführt wird; Testmaschine (Hostname ist Knoten): Gewöhnlicher Docker-Server, laden Sie ein Test-Image-Nginx auf diesen Server herunter und laden Sie es dann zum Testen auf den Registrierungsserver hoch.
- Laden Sie die Image-Registrierung herunter
-
# docker pull registryUsing default tag: latest latest: Pulling from library/registry 81033e7c1d6a: Pull complete b235084c2315: Pull complete c692f3a6894b: Pull complete ba2177f3a70e: Pull complete a8d793620947: Pull complete Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54 Status: Downloaded newer image for registry:latest复制代码
Nach dem Login kopierenBild anzeigen -
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry latest f32a97de94e1 3 months ago 25.8 MB复制代码
Nach dem Login kopierenRegistrierungscontainer ausführen -
# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always - - Namensregister Registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
参数说明 -itd:在容器中打开一个伪终端进行交互操作,并在后台运行; -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化; -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了; --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器; --name registry:创建容器命名为registry,你可以随便命名; registry:latest:这个是刚才pull下来的镜像;
-
测试镜像仓库中所有的镜像
# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
现在是空的,因为才刚运行,里面没有任何镜像内容。
4、测试镜像仓库(测试端操作)
-
修改源和镜像仓库
# vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"] }# systemctl restart docker复制代码
Nach dem Login kopieren -
下载nginx镜像
# docker pull nginx# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
Nach dem Login kopieren -
为镜像打标签
# docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码
Nach dem Login kopieren格式说明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
nginx:lastest
这是源镜像,也是刚才pull下来的镜像文件;registry服务器:5000/nginx:kurisu
这是目标镜像,也是registry私有镜像服务器的IP地址和端口;查看效果
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
Nach dem Login kopieren -
上传到镜像服务器
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] Get https://registry服务器:5000/v2/: http: server gave HTTP response to HTTPS client复制代码
Nach dem Login kopieren这是报错了,需要https的方法才能上传,我们可以修改下daemon.json来解决:
[root@node ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "registry服务器:5000"] }复制代码
Nach dem Login kopieren添加私有镜像服务器的地址,注意书写格式为json,有严格的书写要求,然后重启docker服务:
# systemctl restart docker
Parameterbeschreibung -itd: Öffnen Sie ein Pseudo-Terminal im Container für interaktive Vorgänge und führen Sie es im Hintergrund aus. -v: Binden Sie das Verzeichnis /data/registry des Hosts an das Verzeichnis /var/lib/registry des Containers (dieses Verzeichnis ist das Verzeichnis, in dem Bilddateien im Registrierungscontainer gespeichert werden), um Datenpersistenz zu erreichen. -p: Mapping-Port; Zugriff auf den 5000-Port des Hosts greift auf den Dienst des Registrierungscontainers zu; --restart=always: Dies ist die Neustartstrategie. Wenn der Container abnormal beendet wird, wird der Container automatisch neu gestartet. --name Registry: Erstellen Sie einen Container mit dem Namen Registry. Sie können ihm einen beliebigen Namen geben. Registry:latest: Dies ist das Bild, das gerade abgerufen wurde. -
Testen Sie alle Bilder im Image Warehouse.
# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
4. Testen Sie das Image Warehouse (testseitige Operation)
Ändern Sie die Quelle und das Image Warehouse
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] d7acf794921f: Pushed d9569ca04881: Pushed cf5b3c6798f7: Pushed kurisu: digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe size: 948复制代码
- Laden Sie das Nginx-Image herunter
# docker rmi -f $(docker images -aq)Untagged: registry服务器:5000/nginx:kurisu Untagged: registry服务器:5000/nginx@sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Untagged: nginx:latest Untagged: nginx@sha256:bdbf36b7f1f77ffe7bd2a32e59235dff6ecf131e3b6b5b96061c652f30685f3a Deleted: sha256:719cd2e3ed04781b11ed372ec8d712fac66d5b60a6fb6190bf76b7d18cb50105 Deleted: sha256:e9b6506fb887de50972aefd99d7c5eb56b1a8e757ed953cdfecb86b5359bcb22 Deleted: sha256:55d9d9692a9615a28d183a42bc3881a72a39393feba3664e669e7affb78daa76 Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e复制代码
- Markieren Sie das Bild
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE复制代码
nginx:lastest
Dies ist das Quellbild, das gerade war heruntergezogen Bilddatei; 🎜registry server:5000/nginx:kurisu
Dies ist das Zielbild, das auch die IP-Adresse und der Port des privaten Spiegelservers der Registrierung ist 🎜# docker pull registry服务器:5000/nginx:kurisukurisu: Pulling from nginxfc7181108d40: Pull complete c4277fc40ec2: Pull complete 780053e98559: Pull complete Digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Status: Downloaded newer image for registry服务器:5000/nginx:kurisu复制代码
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB复制代码
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
# systemctl restart docker
🎜Erneut hochladen:🎜# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
Das obige ist der detaillierte Inhalt vonSo bauen Sie ein privates Docker-Lagerhaus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

So starten Sie den Docker -Container neu: Holen Sie sich die Container -ID (Docker PS); Stop den Container (Docker Stop & lt; Container_id & gt;); Starten Sie den Container (Docker start & lt; container_id & gt;); Stellen Sie sicher, dass der Neustart erfolgreich ist (Docker PS). Andere Methoden: Docker Compose (Docker-Compose Neustart) oder Docker-API (siehe Docker-Dokumentation).

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

Docker Process Viewing -Methode: 1. Docker Cli -Befehl: Docker PS; 2. SYSTEMD CLI -Befehl: SystemCTL Status Docker; 3.. Docker Compose CLI Command: Docker-Compose PS; 4. Process Explorer (Windows); 5. /proc -Verzeichnis (Linux).

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen
