Ein Artikel zum Verständnis der Erstellung, des Hochladens, Abrufens und Bereitstellens von Docker-Images

Ein Artikel zum Verständnis der Erstellung, des Hochladens, Abrufens und Bereitstellens von Docker-Images

1. Bilder

1. Was ist ein Spiegel?

(1) Laut Baidu Encyclopedia: Spiegelung ist eine Form der Dateispeicherung und eine Art von Redundanz. Die Daten auf einer Festplatte haben eine identische Kopie auf einer anderen Festplatte, die als Spiegel bezeichnet wird.

(2) Sie können aus vielen Dateien eine Spiegeldatei erstellen, diese mit Programmen wie GHOST auf eine Festplatte legen, sie dann mit Software wie GHOST öffnen und sie anschließend in viele Dateien wiederherstellen. RAID 1 und RAID 10 verwenden Spiegelung.

(3) Zu den gängigen Bilddateiformaten gehören ISO, BIN, IMG, TAO, DAO, CIF und FCD.

Wird Ihnen nach dem Anschauen schwindliger?

Vereinfacht ausgedrückt ist ein Image eigentlich ein Paket einer App, das Programmcode, Basissystem, Abhängigkeitsbibliotheken und Tools enthält.
Einfacher ausgedrückt ist es ein bisschen wie ein APP-Installationspaket.

2. Komposition und Zweck der Bilder

(1) Dockerdatei

: ist das Rezept zum Erstellen der Bilddatei

Wie ein Geheimrezept, das von Generation zu Generation weitergegeben wird: Yunnan Baiyao: Linzhi, Ginseng, Hirschgeweih, Panax Notoginseng usw.

(2) Kratzer

: Dies ist das grundlegendste Docker-Image, das einem Fundament entspricht -> leeres Image, nichts -> von Grund auf neu beginnen

Andere Bilder als Basisbilder verwenden: Andere Bilder können darauf basierend erweitert werden – so, als ob man auf den Schultern von Riesen steht.

Aber wir müssen Schritt für Schritt einen Spiegel bauen.

(3) Ein vollständiges Betriebssystem erfordert:

1.Kernel
2. Systemaufrufe
3. Anwendungen und Bibliotheken
4. Schale usw.

bootfs --》Inhalte, die beim Starten des Containers erforderlich sind

rootfs --》Betriebssystem im Container

Docker speichern

Docker-Export

Prinzip:

Wenn der Container gestartet wird, startet der Kernel bootfs und lädt das Basisimage direkt und lädt es dann Schicht für Schicht – von unten nach oben

Beim Zugriff auf Dateien nach Ausführung des Containers erfolgt der Zugriff von oben nach unten, von der beschreibbaren Ebene aus, Ebene für Ebene.

3. Warum sollten Sie Ihr eigenes Bild erstellen?

Um MySQL in Linux- und CentOS-Systemen herunterzuladen, mussten Sie früher den Befehl yum verwenden. Nachdem Sie die Docker-Technologie erlernt haben, können Sie jede benötigte Software erhalten, indem Sie sie einfach auf Docker ziehen. Docker ist wie eine riesige Ressourcenbibliothek. Es enthält nur Dinge, an die Sie nicht denken können.

Einige Studenten sagten: „Es war die Technologie, die meine Vorstellungskraft von Docker eingeschränkt hat“, und sie vergossen Tränen des Bedauerns.

Einige Studenten sagten: „Da Docker so praktisch ist und so viele Bilddateien hat, warum müssen wir sie dann selbst erstellen?“ Können wir nicht einfach alles nehmen, was wir brauchen?

Unternehmen müssen jedoch häufig ihre eigenen Bilddateien erstellen, da sie sich über die Erstellung durch andere nicht sicher sind oder bestimmte Anforderungen nicht erfüllt werden können. Genauso wie wenn Sie Moutai kaufen gehen und der Händler sagt, es sei der zehnjährige Moutai. Würden Sie ihm glauben? Ist das der Moutai der letzten zehn Jahre? Warum gehen Sie nicht hin und lassen es identifizieren? Wenn du reich bist, tu einfach so, als hätte ich nichts gesagt, hahaha

2. Schritte der Spiegelherstellung (10-Schritte-Methode)

Schritt 1: Dockerfile bearbeiten

[root@sc-docker-server ~]# mkdir /mydocker/
[root@sc-docker-server ~]# cd /mydocker/
[root@sc-docker-server mydocker]#

[root@sc-docker-server mydocker]# vim Dockerfile
VON python:2.7-slim
ARBEITSVERZEICHNIS /app
HINZUFÜGEN ./app
Führen Sie den Befehl pip install --trusted-host pypi.python.org -r requirements.txt aus.
AUSSETZEN 80
ENV NAME Welt
ENV AUTOR Cali
CMD ["python","app.py"]

Schritt 2: Datei requirements.txt bearbeiten

[root@sc-docker-server mydocker]# vim Anforderungen.txt
Flasche
Redis

Schritt 3: Bearbeiten Sie die Datei app.py, unsere Programmdatei

[root@sc-docker-server mydocker]# vim app.py
aus Flasche importieren Flasche
von Redis importieren Redis, RedisError
Betriebssystem importieren
Socket importieren

# Mit Redis verbinden
redis = Redis(Host="redis", db=0, Socket-Verbindungstimeout=2, Socket-Timeout=2)

App = Flask(__name__)

@app.route("/")
def hallo():
    versuchen:
        Besuche = redis.incr("Zähler")
    außer RedisError:
        Besuche = "<i>Verbindung zu Redis nicht möglich, Zähler deaktiviert</i>"

    html = "<h3>Hallo {name}!</h3>" \
           "<b>Hostname:</b> {Hostname}<br/>" \
           "<b>Besuche:</b> {Besuche}"
    return html.format(name=os.getenv("NAME", "Welt"), hostname=socket.gethostname(), Besuche=Besuche)

wenn __name__ == "__main__":
    app.run(Host='0.0.0.0', Port=80)

Schritt 4: Bilddatei generieren

[root@sc-docker-server mydocker]#docker build -t sc_friendlyhello_1 .
Docker-Build -t sc_friendlyhello_1.
Senden des Build-Kontexts an den Docker-Daemon 4,608 kB
Schritt 1/9: VON python:2.7-slim
 ---> eeb27ee6b893
Schritt 2/9: WORKDIR /app
 ---> Cache verwenden
 ---> 81aa71984f63
Schritt 3/9: ./app hinzufügen
 ---> Cache verwenden
 ---> a5c7c6ed471c
Schritt 4/9: VOLUME ["/data_flask"]
 ---> Cache verwenden
 ---> d4db66a741db
Schritt 5/9: Führen Sie den Befehl „pip install --trusted-host pypi.python.org -r requirements.txt“ aus.
 ---> Cache verwenden
 ---> bcdee009e5f7
Schritt 6/9: EXPOSE 80
 ---> Cache verwenden
 ---> 475474ce55ff
Schritt 7/9: ENV NAME World
 ---> Cache verwenden
 ---> 0f03ead6c99b
Schritt 8/9: ENV AUTHOR cali
 ---> Cache verwenden
 ---> f844eb0f1a78
Schritt 9/9: CMD ["python","app.py"]
 ---> Cache verwenden
 ---> ab30484b56b8
Erfolgreich erstellt ab30484b56b8
Erfolgreich getaggt mit sc_friendlyhello_1:latest
[root@sc-docker-server mydocker]#

Schritt 5: Überprüfen Sie, ob das Image erfolgreich ist

[root@sc-docker-server mydocker]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
sc_friendlyhello_1 latest ab30484b56b8 vor 32 Minuten 159 MB

Schritt 6: Verwenden des Images zum Starten des Containers

docker run -d -p 5080:80 --name sc-hello-1 sc_friendlyhello_1

Schritt 7: Zugriff auf den Webdienst des Containers

Verwenden Sie den Curl- oder Chrome-Browser, um auf die Host-IP:5080 zuzugreifen
Hallo Welt!
Hostname: f4aeb5d5305a
Besuche: Verbindung zu Redis nicht möglich, Zähler deaktiviert

Da der Redis-Datenbankcontainer nicht gestartet ist, kann der Flask-Webdienst keine Verbindung zur Redis-Datenbank herstellen

Schritt 8: Starten Sie den Redis-Container

docker run -d -p 6379:6379 --name sc-redis-1 redis

Schritt 9: Starten Sie erneut einen Container mit Ihrem eigenen Image und verknüpfen Sie ihn mit dem Redis-Container

docker run -d --name sc-hello-2 -p 5081:80 --link sc-redis-1:redis sc_friendlyhello_1

Schritt 10: Zugriff auf den Webdienst des Containers

Verwenden Sie den Curl- oder Chrome-Browser, um auf die Host-IP:5081 zuzugreifen.
Hallo Welt!
Hostname: aad7da1892b5
Besuche: 15

3. Spiegelbild erstellen

Betrieb

1. Aktualisieren Sie das Basisimage im Image von sc_friendlyhello_1 auf python:3.9
Benennen Sie Ihr eigenes Bild in sc_friendlyhello_2 um
2. Starten Sie den Container und den Redis-Container und testen Sie den Zugriff**

Arbeitsschritte:

Hochgeladene Dateien installieren

root@sc-docker-server ~]# yum install lrzsz -y Installieren Sie die hochgeladene Software. Letzte Überprüfung auf Ablauf der Metadaten: vor 0:25:32, ausgeführt am Mittwoch, 18. August 2021 um 09:52:02.
Paket lrzsz-0.12.20-43.el8.x86_64 ist bereits installiert.
Abhängigkeitsauflösung.
Es ist keine Behandlung erforderlich.
vollständig!
[root@sc-docker-server ~]

Schritt 1: Laden Sie den Quellcode der App herunter

https://github.com/docker/getting-started Unter Windows herunterladen, dann unter Linux hochladen yum install git -y 

Unter Linux: git clone https://github.com/califeng/getting-started.git

Schritt 2: Entpacken Sie das App-Quellcode-Archiv

[root@sc-docker-server ~]# yum install zip unzip -y

    [root@sc-docker-1 ~]# entpacken Sie getting-started-master.zip 

Schritt 3: Gehen Sie in das App-Verzeichnis und erstellen Sie ein neues Dockerfile

    [root@sc-docker-1 erste-schritte-master]# cd app/
    [root@sc-docker-1 app]# vim Dockerfile
VON Knoten:12-Alpine
ARBEITSVERZEICHNIS /app
KOPIEREN . .
Führen Sie den Befehl yarn install --production aus.
CMD ["Knoten", "src/index.js"]

Schritt 4: Machen Sie den Spiegel

[root@sc-docker-1 app]# docker build -t Erste Schritte .
-t getting-started ist der Name des angegebenen Images. Sie können Ihren eigenen Namen definieren [root@sc-docker-1 app]# docker images Sehen Sie sich das erstellte Image an REPOSITORY TAG IMAGE ID CREATED SIZE
Erste Schritte neueste 5b903e857b8c vor 25 Sekunden 179 MB
redis latest cc69ae189a1a vor 2 Tagen 105MB
nginx 1.19.7 35c43ace9216 vor 7 Tagen 133 MB
nginx latest 35c43ace9216 vor 7 Tagen 133MB
mysql 5.7.33 5f47254ca581 vor 2 Wochen 449 MB
nginx 1.19.6 f6d0b4767a6c vor 6 Wochen 133 MB
Knoten 12-Alpine 0206ff8a5f9e vor 7 Wochen 88,9 MB
richarvey/nginx-php-fpm latest 5c3ad1891297 vor 5 Monaten 506 MB
hallo-welt neueste bf756fb1ae65 vor 13 Monaten 13.3kB
jcdemo/flaskapp latest 4f7a2cc79052 vor 2 Jahren 88,7 MB
[root@sc-docker-1 App]#

Schritt 5: Container des eigenen Images starten

[root@sc-docker-1 app]# docker run -dp 3000:3000 Erste Schritte
8f150a72e7d2d1650685b00a18d237469fa07c8cd56977773dd266b281a3b4ad
[root@sc-docker-1 app]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
8f150a72e7d2 Erste Schritte "docker-entrypoint.s…" vor 5 Sekunden Up 3 Sekunden 0.0.0.0:3000->3000/tcp strange_benz
deabb58e01b0 nginx "/docker-entrypoint.…" vor 26 Stunden Aktiv seit 2 Stunden 0.0.0.0:6655->80/tcp chenpeng
[root@sc-docker-1 App]# 

Schritt 6: Öffnen Sie den Browser, um auf die Website im Container zuzugreifen

Website im Container: http://192.168.0.161:3000/

Zusammenfassen

1. Die Bilderstellung ist eine wesentliche Fähigkeit in der Docker-Technologie. Wenn Sie sagen, dass Sie Docker kennen, werden andere Sie definitiv fragen, ob Sie wissen, wie man Bilder erstellt? Wenn Sie sie fragen, warum sie dieses Ding machen, werden sie wissend lächeln und denken, dass die Fähigkeiten dieser Person sehr gering sein müssen, da sie nicht einmal das kann und trotzdem sagt, dass sie Docker kennt. Haha.

2. Später folgen detaillierte Schritte zur Spiegelherstellung. Die Zehn-Schritte-Methode zur Spiegelherstellung zeigt Ihnen, wie es geht. Nehmen Sie sich Zeit und gehen Sie Schritt für Schritt vor.

Dies ist das Ende dieses Artikels über das Erstellen, Hochladen, Abrufen und Bereitstellen von Docker-Images. Weitere relevante Inhalte zum Erstellen, Hochladen, Abrufen und Bereitstellen von Docker-Images finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Lösung für Docker-Push-Image-Fehler
  • So ziehen Sie das Docker-Image herunter, um die Version anzuzeigen
  • Führen Sie die folgenden Schritte aus, damit Docker Images abrufen kann
  • So löschen Sie ein Image in Docker
  • So exportieren und importieren Sie Bilder zwischen Docker
  • Eine detaillierte Einführung in die Erstellung von Docker-Images, wie man Images ändert und hochlädt usw.
  • So löschen Sie das None-Image im Docker
  • Detaillierte Erklärung des Unterschieds zwischen Docker-Images und Containern
  • Detaillierte Erläuterung zweier Methoden zum Erstellen von Docker-Images
  • Konfigurieren der Einstellungen für inländische Images in Docker

<<:  Zeitleistenimplementierungsmethode basierend auf ccs3

>>:  Spezifische Verwendung des Node.js-Paketmanagers npm

Artikel empfehlen

Schritte zum Verpacken und Freigeben des Vue-Projekts

Inhaltsverzeichnis 1. Übergang von der Entwicklun...

MySQL GROUP_CONCAT-Einschränkungslösung

Wirkung: Die Funktion GROUP_CONCAT kann einen Fel...

So lösen Sie das Problem der Groß-/Kleinschreibung bei MySQL-Abfragen

Frage Als ich kürzlich ein praktisches Projekt mi...

37 Tipps für ein gutes User Interface Design (mit Bildern)

1. Versuchen Sie, ein einspaltiges statt eines meh...

Tiefgreifendes Verständnis der MySQL-Selbstverbindung und Join-Assoziation

1. MySQL-Selbstverbindung MySQL muss beim Abfrage...

Was ist BFC? So löschen Sie Floats mithilfe von CSS-Pseudoelementen

BFC-Konzept: Der Blockformatierungskontext ist ei...

Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

In diesem Artikel wird der spezifische Code der E...

Neunundvierzig JavaScript-Tipps und Tricks

Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...

Detaillierte Erläuterung der Verwendung des MySQL-Auswahl-Cache-Mechanismus

Der MySQL-Abfragecache ist standardmäßig aktivier...

Tägliche Studiennotizen im HTML-Designmuster

Studiennotizen zu HTML-Entwurfsmustern Diese Woch...