Inhaltsverzeichnis
1. Hintergrundeinführung
2. Umgebung
4、测试镜像仓库(测试端操作)
4. Testen Sie das Image Warehouse (testseitige Operation)
Ändern Sie die Quelle und das Image Warehouse
Heim Betrieb und Instandhaltung Docker So bauen Sie ein privates Docker-Lagerhaus

So bauen Sie ein privates Docker-Lagerhaus

Nov 10, 2020 pm 04:28 PM
docker

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
  1. # 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 kopieren

  2. Bild anzeigen
  3. # docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    registry            latest              f32a97de94e1        3 months ago        25.8 MB复制代码
    Nach dem Login kopieren

  4. Registrierungscontainer ausführen
  5. # 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下来的镜像;

  6. 测试镜像仓库中所有的镜像

    # curl http://127.0.0.1:5000/v2/_catalog
    {"repositories":[]}
    现在是空的,因为才刚运行,里面没有任何镜像内容。

4、测试镜像仓库(测试端操作)

  1. 修改源和镜像仓库

    # vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"]
    }# systemctl restart docker复制代码
    Nach dem Login kopieren
  2. 下载nginx镜像

    # docker pull nginx# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              719cd2e3ed04        2 weeks ago         109MB复制代码
    Nach dem Login kopieren
  3. 为镜像打标签

    # 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
  4. 上传到镜像服务器

    # 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.

  5. Testen Sie alle Bilder im Image Warehouse.

    # curl http://127.0.0.1:5000/v2/_catalog

    {"repositories":[]}

    Es ist jetzt leer, da es gerade ausgeführt wurde und kein Bildinhalt darin ist.

    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复制代码
Nach dem Login kopieren
  • 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复制代码
Nach dem Login kopieren
  • Markieren Sie das Bild
# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE复制代码
Nach dem Login kopieren
🎜🎜Formatbeschreibung: Verwendung: Docker-Tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]🎜🎜🎜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复制代码
Nach dem Login kopieren
🎜 🎜🎜Auf den Spiegelserver hochladen🎜
# docker imagesREPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
registry服务器:5000/nginx   kurisu              719cd2e3ed04        2 weeks ago         109MB复制代码
Nach dem Login kopieren
🎜Dies ist ein Fehler. Zum Hochladen benötigen wir die Datei daemon.json: 🎜
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
Nach dem Login kopieren
🎜Beachten Sie, dass das Schreibformat lautet json. Es gelten strenge Schreibanforderungen: 🎜# systemctl restart docker🎜Erneut hochladen:🎜
# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
Nach dem Login kopieren
🎜Der Upload-Test ist kein Problem Löschen Sie zuerst das gerade vom Registrierungsserver hochgeladene Busybox-Image: 🎜rrreee🎜 Überprüfen Sie, ob alle Images auf dem Knotenhost gelöscht wurden: 🎜rrreee🎜 Laden Sie dann das Nginx-Image vom Registrierungsserver herunter: 🎜rrreee🎜 Überprüfen Sie das Bild auf dem Knotenhost: 🎜rrreee🎜🎜🎜Sehen Sie sich den Remote-Warehouse-Spiegel an🎜🎜🎜Alle Spiegel auflisten:🎜🎜rrreee🎜🎜Listen Sie die Tags von Nginx-Spiegeln auf:🎜🎜rrreee

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verpacken Sie ein Projekt mit Pycharm So verpacken Sie ein Projekt mit Pycharm Apr 25, 2024 am 03:54 AM

Es gibt vier Möglichkeiten, ein Projekt in PyCharm zu verpacken: Als separate ausführbare Datei verpacken: In das EXE-Einzeldateiformat exportieren. Als Installationsprogramm verpackt: Setuptools-Makefile generieren und erstellen. Als Docker-Image verpacken: Geben Sie einen Image-Namen an, passen Sie die Build-Optionen an und erstellen Sie. Als Container verpacken: Geben Sie das zu erstellende Image an, passen Sie die Laufzeitoptionen an und starten Sie den Container.

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Agile Entwicklung und Betrieb der PHP-Microservice-Containerisierung Agile Entwicklung und Betrieb der PHP-Microservice-Containerisierung May 08, 2024 pm 02:21 PM

Antwort: PHP-Microservices werden mit HelmCharts für eine agile Entwicklung bereitgestellt und mit DockerContainer für Isolation und Skalierbarkeit in Containern verpackt. Detaillierte Beschreibung: Verwenden Sie HelmCharts, um PHP-Microservices automatisch bereitzustellen, um eine agile Entwicklung zu erreichen. Docker-Images ermöglichen eine schnelle Iteration und Versionskontrolle von Microservices. Der DockerContainer-Standard isoliert Microservices und Kubernetes verwaltet die Verfügbarkeit und Skalierbarkeit der Container. Verwenden Sie Prometheus und Grafana, um die Leistung und den Zustand von Microservices zu überwachen und Alarme und automatische Reparaturmechanismen zu erstellen.

So starten Sie das Golang-Programm So starten Sie das Golang-Programm Apr 21, 2024 am 12:47 AM

Es gibt vier Möglichkeiten, ein Go-Programm zu starten: Über die Befehlszeile: go run main.go Starten über das „Ausführen“- oder „Debug“-Menü der IDE Starten eines Containers mit einem Container-Orchestrierungstool (z. B. Docker oder Kubernetes) Verwenden von systemd oder Supervisor auf Unix-Systemen. Wird als Systemdienst ausgeführt

Docker schließt die lokale Bereitstellung des großen Open-Source-Modells LLama3 in drei Minuten ab Docker schließt die lokale Bereitstellung des großen Open-Source-Modells LLama3 in drei Minuten ab Apr 26, 2024 am 10:19 AM

Übersicht LLaMA-3 (LargeLanguageModelMetaAI3) ist ein groß angelegtes Open-Source-Modell für generative künstliche Intelligenz, das von Meta Company entwickelt wurde. Im Vergleich zur Vorgängergeneration LLaMA-2 gibt es keine wesentlichen Änderungen in der Modellstruktur. Das LLaMA-3-Modell ist in verschiedene Maßstabsversionen unterteilt, darunter kleine, mittlere und große, um unterschiedlichen Anwendungsanforderungen und Rechenressourcen gerecht zu werden. Die Parametergröße kleiner Modelle beträgt 8 B, die Parametergröße mittlerer Modelle beträgt 70 B und die Parametergröße großer Modelle erreicht 400 B. Beim Training besteht das Ziel jedoch darin, multimodale und mehrsprachige Funktionalität zu erreichen, und die Ergebnisse werden voraussichtlich mit GPT4/GPT4V vergleichbar sein. Ollama installierenOllama ist ein Open-Source-Großsprachenmodell (LL

So installieren Sie Deepseek So installieren Sie Deepseek Feb 19, 2025 pm 05:48 PM

Es gibt viele Möglichkeiten, Deepseek zu installieren, einschließlich: kompilieren Sie von Quelle (für erfahrene Entwickler) mit vorberechtigten Paketen (für Windows -Benutzer) mit Docker -Containern (für bequem am besten, um die Kompatibilität nicht zu sorgen), unabhängig von der Methode, die Sie auswählen, bitte lesen Die offiziellen Dokumente vorbereiten sie sorgfältig und bereiten sie voll und ganz vor, um unnötige Schwierigkeiten zu vermeiden.

Architektur und Praxis verteilter PHP-Systeme Architektur und Praxis verteilter PHP-Systeme May 04, 2024 am 10:33 AM

Die verteilte PHP-Systemarchitektur erreicht Skalierbarkeit, Leistung und Fehlertoleranz durch die Verteilung verschiedener Komponenten auf mit dem Netzwerk verbundene Maschinen. Die Architektur umfasst Anwendungsserver, Nachrichtenwarteschlangen, Datenbanken, Caches und Load Balancer. Zu den Schritten zur Migration von PHP-Anwendungen auf eine verteilte Architektur gehören: Identifizieren von Dienstgrenzen, Auswählen eines Nachrichtenwarteschlangensystems, Einführung eines Microservices-Frameworks, Bereitstellung für die Containerverwaltung, Diensterkennung

Wie kann die Leistung von Java-Funktionen durch Containerisierung optimiert werden? Wie kann die Leistung von Java-Funktionen durch Containerisierung optimiert werden? Apr 29, 2024 pm 03:09 PM

Die Containerisierung verbessert die Leistung von Java-Funktionen auf folgende Weise: Ressourcenisolation – Gewährleistung einer isolierten Computerumgebung und Vermeidung von Ressourcenkonflikten. Leicht – beansprucht weniger Systemressourcen und verbessert die Laufzeitleistung. Schneller Start – reduziert Verzögerungen bei der Funktionsausführung. Konsistenz – Entkoppeln Sie Anwendungen und Infrastruktur, um ein konsistentes Verhalten in allen Umgebungen sicherzustellen.

See all articles