Einführung in Linux Container / Docker (Teil 2)

Teil 1

Dies ist eine Fortsetzung von Einführung in Linux Container / Docker (Teil 1).

Docker

Von Docker bereitgestellte OSS-Container-Engine. (Es gibt auch eine kostenpflichtige Version)

Wie oben erwähnt, ist LXC nicht sehr praktisch, da es nur die Mindestfunktionen </ u> hat ** ⇒ Docker ** ist eine Erweiterung von LXC, die verpackt ist, um die Handhabung zu vereinfachen.

  • Früher hat Docker LXC intern verwendet, jetzt scheint es anders zu sein. Die obige Idee ändert sich jedoch nicht.

Übersicht über Docker

Docker ist ein Tool, das die oben erwähnte LXC-Technologie umschließt und die Verwendung vereinfacht. Die folgenden Funktionen werden hinzugefügt.

  • Portabilität, Freigabefunktion Docker kann Container in TAR-Dateien archivieren und an andere physische Computer senden oder über die Containerregistrierung freigeben. Dadurch kann der erstellte Container auf einen anderen Computer umgeleitet werden.

  • Anwendungsfokus LXC wurde ursprünglich aus der Perspektive einer "leichten VM" erstellt, aber Docker macht LXC leichter und einfacher, wodurch es einfacher wird, jede Anwendung und jeden Prozess zu containerisieren.

  • IaC Im Container zu erstellende Dateien und zu installierende Anwendungen können im Format Dockerfile definiert werden. Dies ermöglicht es, den Inhalt des Containers auf IaC-Weise zu definieren.

  • Versionskontrolle Mit Docker erstellte Container können eine Versionsnummer erhalten und mit Docker verwaltet werden. Dadurch ist es möglich, Unterschiede zwischen Versionen zu verwalten und bei Problemen ein Rollback durchzuführen.

  • Wiederverwendung von Bauteilen Docker erstellt ein Container-Image in Form des Hinzufügens von Dateien und Anwendungen zu einem vorhandenen Container-Image mithilfe eines Mechanismus, der als Ebenen bezeichnet wird. Durch die gemeinsame Nutzung der Teile, die mehreren Containern gemeinsam sind, können die Festplattenkapazität und die Verwaltungskosten reduziert werden.

  • Ökosystem Docker ist der größte Containermotor und wird von einem großen Ökosystem umgeben. Beispiele hierfür sind die folgenden zugehörigen Software- und Serviceleistungen.

--Docker Hub… Eine Site, die Docker-Container im Internet gemeinsam nutzt --Docker-Compose… Software zum gemeinsamen Starten mehrerer Container --Kubernetes… Software, mit der Sie Container flexibler betreiben können, indem Sie einen Cluster mit einer großen Anzahl von Linux-Hosts bilden (später beschrieben).

Docker-Begriffe und -Komponenten

Bilder und Instanzen

Im Fall einer VM ist das Image eine Vorlage und die Instanz ist die VM, die tatsächlich ausgeführt wird. Intern verweist die Instanz nur auf das Image, sodass beim Start kein Kopieren erfolgt. Durch Angabe des Image-Namens mit dem Docker-Befehl und "Ausführen" wird der Linux-Container tatsächlich erstellt.

image.png

In Docker werden neue Bilder erstellt, indem Dateien zu vorhandenen Bildern hinzugefügt und Befehle ausgeführt werden. Für wichtige OSS wird das offizielle Container-Image auf einer Website im Internet namens Docker Hub veröffentlicht. Bei der tatsächlichen Verwendung wird häufig ein benutzerdefiniertes Bild erstellt und verwendet, indem dem offiziellen Bild Einstellungswerte hinzugefügt werden.

image.png

Dockerfile

Die Definition zum Erstellen eines Bildes (welche Datei hinzugefügt werden soll, welcher Befehl ausgeführt werden soll) ist im Text Dockerfile beschrieben. Das Erstellen eines Container-Images mit einer Docker-Datei wird als "Build" bezeichnet.

--Container-Image (Basis-Image) + Docker-Datei => (Build) => ** Container-Image (benutzerdefiniertes Image) ** --Container image => (Start) => ** Containerinstanz **

Wie im folgenden Beispiel gezeigt, wird es im Wesentlichen durch Hinzufügen einer Datei oder Ausführen eines Befehls zu einem vorhandenen Container-Image erstellt, das vom Docker-Hub oder dergleichen abgerufen wird. Es ist nicht unmöglich, einen Behälter von Grund auf neu herzustellen, aber es ist nicht möglich, weil es schwierig ist und wenig Wert hat.

Erstellen Sie einen Container zum Ausführen eines Python-Programms namens app.py wie folgt. (Das Paket usw., das enthalten ist, ist nur als Beispiel angemessen geschrieben, es gibt keine besondere Bedeutung)

Dockerfile


#Erstellt aus dem offiziellen Python-Image
FROM python:3.7.6-stretch

#Paket mit pip installieren
RUN pip install pip --upgrade && \
    pip install numpy scipy

#Installieren Sie das Paket mit apt
RUN apt-get update -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    sshpass

#Erstellen Sie ein Verzeichnis
WORKDIR /work

#Platzieren Sie das Programm
COPY app.py /work

#Geben Sie den ersten Befehl an, der beim Starten einer Containerinstanz ausgeführt werden soll
ENTRYPOINT python /work/app.py

Nachdem Sie dies geschrieben und gespeichert haben, können Sie den Container erstellen, indem Sie ihn mit dem Befehl docker build laden.

Containerregistrierung

Ein Mechanismus zum Freigeben des erstellten Container-Images. Viele OSS-Container-Images und persönlich erstellte Container-Images werden auf Docker Hub im Internet veröffentlicht. (!) Bitte beachten Sie, dass Sie nicht wissen, was in dem von der Person veröffentlichten Bild enthalten ist.

Wenn Sie in einer geschlossenen Umgebung arbeiten, ist es wünschenswert, eine Containerregistrierung in diesem Netzwerk einzurichten.

image.png

Das Herunterladen eines Bildes aus der Registrierung wird als "Pull" und das Hochladen als "Push" bezeichnet.

Zusammenfassung

Docker

  • ** Containerbild **… Containervorlage. Hinzufügen (Ändern) von Dateien zu einem vorhandenen Bild Sie können ein benutzerdefiniertes Bild erstellen.

  • ** Containerinstanz **… Die tatsächliche Ausführungsumgebung, die aus dem Container-Image erstellt wurde. Intern bezieht es sich nur auf das Bild, daher wird es für einen Moment erstellt. Ich benutze nicht viel Speicher.

  • ** Containerregistrierung **… Ein Ort zum Speichern von Containerbildern. Es ist im Internet und kann lokal eingerichtet werden.

Recommended Posts

Einführung in Linux Container / Docker (Teil 1)
Einführung in Linux Container / Docker (Teil 2)
Einführung in die praktische Containerentwicklung von Docker / Kubernetes
Einführung von Docker - Teil 1--
Einführung in Spring Boot Teil 1
[Linux] Starten Sie den Apache-Container mit Docker
Docker Push zur GitHub Container Registry (ghcr.io)
Einführung in die schnelle Übungsausgabe Kapitel 5 Teil 2
[Docker] Kopieren Sie Dateien aus dem Docker-Container auf den Host
Docker Container Build kann PHP-Radis nicht installieren
Installieren Sie Docker mit WSL2 Memo ([Teil 2] Docker-Einführung)
[Einführung in Docker] Offizielles Tutorial (japanische Übersetzung)
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Einführung in die praktische Containerentwicklung von Docker / Kubernetes"
Einführung in web3j
Einführung in Micronaut 1 ~ Einführung ~
[Java] Einführung in Java
Kleiner Docker Container
Einführung in die Migration
Rails Docker-Teil 1-
Rails Docker ~ Teil 2 ~
Einführung in Java
Einführung in Doma
[Docker] Einführung in Docker Compose Grundlegende Zusammenfassung von Docker-Compose.yml
So erhalten Sie einen Heapdump aus einem Docker-Container
Road to Java Engineer Teil 1 Einführung & Umgebungskonstruktion
Kopieren Sie Dateien vom Docker-Container auf den Host (Docker-CP).
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Einfache Einrichtung zum Ausführen des Docker-Befehls ohne sudo (Linux)
Einführung in JAR-Dateien
[Einführung in Docker x ECS] ECS-Bereitstellung mit Docker Compose
Einführung in Ratpack (8) -Session
Schritte zum Verschieben eines Docker-Images in die GitHub Container Registry (ghcr.io)
Einführung in Algorithmen mit Java-Dictionary Reihenfolge / Kombination verschiedener Lebensmittel (Teil1)
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Erstellen Sie einen Docker-Container, um EPS in eine PGF-Quelle zu konvertieren
So installieren Sie Docker
Einführung in Entwurfsmuster (Einführung)
Einführung in die praktische Programmierung
Einführung in den Befehl javadoc
Einführung in den Befehl jar
Einführung in Ratpack (2) -Architektur
Einführung in den Lambda-Stil
Ein Memorandum bei der Installation von Docker und der Erstellung eines Linux-Containers
Einführung in den Java-Befehl
Docker-Container-Nutzungsszene
Einführung in die Keycloak-Entwicklung
Übertragen Sie ein Docker-Image von GitHub Actions in die GitHub Container Registry
Einführung in den Befehl javac
[Einführung in Docker] ~ Kürzeste Erklärung bis zum Start von Jupyter Lab ~
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal: