Docker-Container vom Einstieg bis zur Obsession (empfohlen)

Docker-Container vom Einstieg bis zur Obsession (empfohlen)

1. Was ist Docker?

Jeder kennt virtuelle Maschinen. Die Installation einer virtuellen Linux-Maschine unter Windows ist für die meisten Programmierer eine gängige Lösung. Die meisten Produktionsumgebungen des Unternehmens sind ebenfalls virtuelle Maschinen. Virtuelle Maschinen virtualisieren physische Hardwareressourcen und weisen sie bei Bedarf zu und verwenden sie. Virtuelle Maschinen werden genau wie echte Betriebssysteme verwendet. Wenn sie nicht mehr benötigt werden, können Ressourcen durch einfaches Löschen der Dateien der virtuellen Maschine zurückgefordert werden, was für eine zentrale Verwaltung sehr praktisch ist.

Da virtuelle Maschinen sehr groß sind und viele Hardwareressourcen verbrauchen, hat Linux eine weitere Virtualisierungstechnologie entwickelt, nämlich Linux Containers (abgekürzt LXC), die kein vollständiges Betriebssystem wie eine virtuelle Maschine simuliert, aber denselben Effekt wie eine virtuelle Maschine bietet. Wenn virtuelle Maschinen auf Betriebssystemebene isoliert sind, dann sind Container auf Prozessebene isoliert. Es ist denkbar, dass die Vorteile dieser Isolationsstufe zweifellos schnell und ressourcensparend sind.

Docker ist ein Paket von Linux-Containern, das eine einfache und praktische Benutzeroberfläche bietet. Es ist derzeit die beliebteste Linux-Containerlösung.

Hier ist die Definition aus der Enzyklopädie:

Docker ist eine Open-Source-Container-Engine für Anwendungen, die auf der Sprache Go basiert und dem Apache 2.0-Protokoll entspricht. Docker ermöglicht es Entwicklern, ihre Anwendungen und abhängigen Pakete in einen portablen Container zu packen und sie dann auf jedem gängigen Linux-Rechner zu veröffentlichen. Es kann auch Virtualisierung erreichen. Container verwenden einen vollständigen Sandbox-Mechanismus und haben keine Schnittstellen untereinander.

2. Welche Probleme löst Docker?

1. Lösen Sie das Problem des Ressourcenverbrauchs der virtuellen Maschine.

Virtuelle Maschinen laufen auf dem Server-Betriebssystem, Client-Betriebssysteme laufen auf den virtuellen Maschinen und Benutzeranwendungen laufen auf den Client-Betriebssystemen. 80 % des Ressourcen-Overheads eines Servers werden für die Hardware-Virtualisierung und das Client-Betriebssystem selbst aufgewendet.

Abbildung 1. Unterschiede zwischen der virtuellen Maschinenarchitektur und der Containerarchitektur

Wie in Abbildung 1 dargestellt, wird bei Verwendung der Docker-Containertechnologie ein virtueller Server auf dem Container ausgeführt und die Anwendung des Benutzers wird auf dem virtuellen Server ausgeführt. Der virtuelle Server und das Serverbetriebssystem verwenden denselben Kernel und das Dateisystem des virtuellen Servers verwendet das Dateisystem des physischen Servers, ist jedoch isoliert. Es scheint, dass jeder virtuelle Server sein eigenes unabhängiges Dateisystem hat. Auf dem physischen Server wird ein virtuelles Brückengerät eingerichtet und jeder virtuelle Server ist über das virtuelle Brückengerät mit dem Netzwerk verbunden. Der virtuelle Server verwendet direkt die CPU, den Speicher und die Festplatte des physischen Servers und virtualisiert die Hardware nicht. Daher wird kein Ressourcenverbrauch durch Hardwarevirtualisierung und Client-Betriebssystem verursacht. Die Leistung jedes virtuellen Servers entspricht in etwa der des physischen Servers.

Ein gewöhnlicher Heimcomputer, auf dem eine virtuelle Linux-Maschine läuft, kann sehr langsam sein, aber mit Docker können Sie Dutzende oder sogar Hunderte virtueller Linux-Server virtualisieren. Wenn Sie auf einen leistungsstarken Server umsteigen, können Sie Docker verwenden, um private Cloud-Dienste bereitzustellen.

2. Schnelle Bereitstellung.

Die Schwierigkeit der Softwareentwicklung liegt in der Umgebungskonfiguration. Die Software, die auf Ihrem eigenen Computer läuft, läuft möglicherweise nicht auf einem anderen Computer, es sei denn, das Betriebssystem ist richtig eingerichtet und die verschiedenen Komponenten und Bibliotheken sind richtig installiert. Um beispielsweise ein in Java entwickeltes Websystem einzusetzen, müssen auf dem Computer Java und die richtigen Umgebungsvariablen installiert sein und möglicherweise auch Tomcat und Nginx. Bei einem Maschinenwechsel muss wieder von vorne begonnen werden.

Mit Docker können Sie die Anwendung und ihre Abhängigkeiten in einer Datei (Docker-Image-Datei) packen. Durch Ausführen dieser Datei wird ein virtueller Server gestartet. Das Starten der Anwendung oder des Dienstes auf dem virtuellen Server ist genauso, als ob Sie ihn auf einer echten physischen Maschine ausführen würden. Mit Docker können Sie ihn einmal bereitstellen und überall ausführen. Er kann auch für automatisierte Releases verwendet werden.

3. Sorgen Sie für eine Einwegumgebung.

Beispielsweise ist das lokale Testen der Software anderer Benutzer, das Bereitstellen einer Unit-Test- und Build-Umgebung während der kontinuierlichen Integration und das Starten oder Herunterfahren eines virtuellen Servers so einfach und schnell wie das Starten oder Herunterfahren eines Prozesses.

4. Bieten Sie flexible Cloud-Dienste an.

Da Docker-Container jederzeit an- und abgeschaltet werden können, eignen sie sich sehr gut zur dynamischen Erweiterung und Verkleinerung.

5. Erstellen Sie eine Microservices-Architektur .

Durch mehrere Container kann eine Maschine viele virtuelle Server ausführen, sodass eine Microservice-Architektur oder eine verteilte Architektur auf einer Maschine simuliert werden kann.

3. Docker-Installation, Bereitstellung und Verwendung

Dieser Artikel stellt die Installation und Verwendung des Ubuntu 18.04-Systems vor. Informationen zu anderen Betriebssystemen finden Sie in der offiziellen Dokumentation unter https://docs.docker.com/.

1. Docker Engine installieren

Holen Sie sich die neueste Version des Docker-Installationspakets

aaron@ubuntu:~$ wget -qO- https://get.docker.com/ | sh

Führen Sie den obigen Befehl aus und geben Sie das aktuelle Benutzerkennwort ein, um die neueste Version des Docker-Installationspakets automatisch herunterzuladen und zu installieren.

Nach Abschluss der Installation erscheint eine Eingabeaufforderung:

Wenn Sie Docker als Nicht-Root-Benutzer verwenden möchten, sollten Sie jetzt berücksichtigen
Fügen Sie Ihren Benutzer der Gruppe „Docker“ mit etwas wie: hinzu:

 sudo usermod -aG Docker Aaron

Denken Sie daran, dass Sie sich ab- und wieder anmelden müssen, damit die Änderungen wirksam werden!

ACHTUNG: Das Hinzufügen eines Benutzers zur Gruppe „Docker“ gewährt die Möglichkeit zum Ausführen
     Container, die verwendet werden können, um Root-Rechte auf dem
     Docker-Host.
     Siehe https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
     für weitere Informationen.

Wenn Sie Docker direkt als Nicht-Root-Benutzer ausführen möchten, müssen Sie Folgendes ausführen:

sudo usermod -aG Docker Aaron 

Führen Sie den Befehl aus, um den Benutzer Aaron zur Docker-Benutzergruppe hinzuzufügen, und melden Sie sich dann erneut an. Andernfalls wird der folgende Fehler gemeldet:

Docker: Beim Versuch, eine Verbindung zum Docker-Daemon-Socket unter unix:///var/run/docker.sock herzustellen, wurde die Berechtigung verweigert: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: Berechtigung verweigert.
Siehe „docker run --help“.

Führen Sie den folgenden Befehl aus, um die Docker-Engine zu starten:

aaron@ubuntu:~$ sudo service docker start

Nach erfolgreicher Installation ist das System so eingestellt, dass es beim Booten automatisch startet. Wenn Sie es manuell einstellen möchten, führen Sie den folgenden Befehl aus:

sudo systemctl Docker aktivieren
sudo systemctl starte Docker

Probelauf

aaron@ubuntu:~$ sudo docker run hallo-welt

2. Docker verwenden

1. Verstehen Sie die Architektur von Docker

Machen Sie sich vor der Verwendung zunächst mit der Architektur von Docker vertraut, wie in der folgenden Abbildung dargestellt:

Docker-Architekturdiagramm

  • Ein Docker-Image ist eine im Docker-Register gespeicherte Datei und dient als Vorlage zum Erstellen eines Docker-Containers.
  • Ein Docker-Container ist eine Anwendung oder eine Gruppe von Anwendungen, die unabhängig voneinander ausgeführt werden und als der oben erwähnte virtuelle Server verstanden werden können.
  • Ein Docker-Host ist eine physische oder virtuelle Maschine, auf der der Docker-Daemon und Container ausgeführt werden.
  • Der Docker-Client verwendet die Docker-API, um über die Befehlszeile oder andere Tools mit dem Docker-Daemon zu kommunizieren.

Als Benutzer verwenden wir direkt den Docker-Client.

2. Docker-Befehl

Sehen Sie sich die Hilfeinformationen zum Docker-Befehl an

docker --help #Hilfeinformationen für alle Docker-Befehle docker COMMAND --help #Hilfeinformationen für bestimmte Docker-Befehle COMMAND

Docker-Informationen anzeigen

Docker-Informationen

Sie können den Containerpool, die verwendete Datengröße, die Gesamtdatengröße, die grundlegende Containergröße, die Anzahl der aktuell ausgeführten Container usw. sehen.

Suchen Sie nach Bildern und nach Containerbildern, die von anderen im Internet erstellt wurden.

Docker-Suche Ubuntu
Docker-Suche Centos

Ubuntu-Bilder

Von hier aus können wir sehen, dass einige Images integrierte Anwendungen wie PHP, Java und Ansible haben. Wir können auch Image-Dateien erstellen, die unsere eigenen Anwendungen oder Dienste enthalten, und diese an andere weitergeben. Sie können Docker direkt verwenden, um den Container ohne zusätzliche Vorgänge und ohne Verbrauch von Ressourcen wie virtuellen Maschinen zu öffnen. Sie können Ihre Anwendungen oder Dienste ausführen. Ist das nicht sehr praktisch? !

Laden Sie von anderen erstellte Container-Images aus dem Internet herunter.

Docker-Pull Centos
Docker-Pull Ubuntu

Importieren Sie die heruntergeladene Container-Image-Datei

Docker laden < image_xxx.tar

Spiegel anzeigen

Docker-Bilder
Docker-Bilder -a

Überprüfen Sie das Bild

Docker-Inspektion Ubuntu

Sie können die grundlegenden Informationen des Container-Image sehen.

Löschen Sie das Bild und geben Sie die Löschung anhand der Bild-ID an

Docker RMI Ubuntu

Alle Bilder löschen

Docker RMI $ (Docker-Bilder -q)

Spiegelverlauf anzeigen

Docker-Geschichte Ubuntu

Ausführen des Containers

Ein Docker-Container kann als ein in einer Sandbox ausgeführter Prozess verstanden werden, der die für die Ausführung des Prozesses erforderlichen Ressourcen enthält, darunter das Dateisystem, Systembibliotheken, die Shell-Umgebung usw. Allerdings führt diese Sandbox standardmäßig keine Programme aus. Sie müssen einen Prozess in der Sandbox ausführen, um einen Container zu starten. Dieser Prozess ist der einzige Prozess des Containers. Wenn der Prozess endet, wird daher auch der Container vollständig gestoppt.

Führen Sie den Ubuntu-Container aus und rufen Sie die interaktive Umgebung auf

aaron@ubuntu:~$ docker run -i --name="ubuntu1" --hostname="ubuntu1" ubuntu /bin/sh
Katze /etc/hosts
127.0.0.1 lokaler Host
::1 lokaler Host ip6-lokaler Host ip6-Loopback
fe00::0 ip6-lokales Netz
ff00::0 ip6-mcastprefix
ff02::1 ip6-alle Knoten
ff02::2 ip6-allerouter
172.17.0.2 Ubuntu1
werich
Wurzel
uname -a
Linux Ubuntu1 4.15.0-34-generisch #37-Ubuntu SMP Montag, 27. August 2018, 15:21:48 UTC x86_64 x86_64 x86_64 GNU/Linux

Im obigen Befehl haben wir einen Container mit dem Namen ubuntu1 erstellt und den Hostnamen des Containers auf ubuntu1 gesetzt. Nachdem wir den Befehl /bin/sh eingegeben hatten, druckten wir den Inhalt der Hosts-Datei aus und überprüften die Kernelversion (die mit der lokalen Betriebssystemversion übereinstimmt). Hier können verschiedene Linux-Befehle verwendet werden, genau wie bei der Verwendung von Befehlen im neuen Betriebssystem. Auf die gleiche Weise erstellen wir einen Ubuntu2-Container in einem neuen Terminal und verwenden

Docker PS

Zeigen Sie die laufenden Container an.

Anzeigen laufender Container

Geben Sie „exit“ ein, um den Container zu verlassen.

Docker ausführen -d Ubuntu

Es wird eine lange Zeichenfolge alphanumerischer Zeichen angezeigt. Dabei handelt es sich um die Container-ID. Bitte beachten Sie, dass der Container einen kontinuierlich laufenden Prozess haben muss, da der Container sonst bald automatisch beendet wird.
Führen Sie den Container aus und geben Sie die MAC-Adresse an

docker run -d --name='centos3' --hostname='centos3' --mac-address="02:42:AC:11:00:24" docker-centos6.10-hadoop-spark

Alle Container auflisten

Docker ps -a

Listet die zuletzt gestarteten Container auf

Docker ps -l

Überprüfen Sie den Behälter

Docker-Inspektion Centos1

Sie können sich über den Container informieren.

Abrufen der Container-CID

docker inspect -f '{{.Id}}' centos1

Holen Sie sich die Container-PID

docker inspect -f '{{.State.Pid}}' centos1

Holen Sie sich die Container-IP

docker inspect -f '{{.NetworkSettings.IPAddress}}' centos1

Container-Gateway abrufen

docker inspect -f '{{.NetworkSettings.Gateway}}' centos1

MAC-Adresse des Containers abrufen

docker inspect -f '{{.NetworkSettings.MacAddress}}' centos1

Anzeigen der Container-IP-Adresse

docker inspect -f '{{.NetworkSettings.IPAddress}}' centos1

Container verbinden

IP-Adresse des SSH-Containers

Passwort eingeben: 123456

Nachdem der Container ausgeführt wird, können Sie den Container auf andere Weise betreten

docker exec -it centos /bin/sh

Zeigen Sie die Protokolle des Container-Laufprozesses an

Docker-Protokolle Centos1

Listet die Dateien oder Verzeichnisse auf, die in einem Container geändert wurden. Die Liste zeigt drei Ereignistypen: A hinzugefügt; D gelöscht; C geändert

Docker-Diff Centos1

Und im anfänglichen Container-Image-Projekt können der Benutzer oder das System die hinzugefügten/geänderten/gelöschten Verzeichnisdateien anzeigen.
Zeigen Sie die im Container ausgeführten Prozesse an

Docker oben Centos1

Dateien/Verzeichnisse im Container auf den lokalen Server kopieren

docker cp centos1:/etc/passwd /tmp/
ls /tmp/passwd

Die Containerdateien können auch über die Netzwerk-IP-Adresse auf den Server kopiert werden, was bequemer ist.

Stoppen des Containers

Docker stoppt Centos1

Stoppen Sie alle Container

Docker töten $ (Docker ps -a -q)

Starten des Containers

Docker starten Centos1

Löschen eines einzelnen Containers

Docker stoppt Centos1
Docker RM Centos1

Bevor Sie einen Container löschen, müssen Sie ihn stoppen.

Alle Container löschen

Docker töten $ (Docker ps -a -q)
docker rm $(docker ps -a -q)

3. Der Begriff des Volumens

Um Daten zu speichern (persistent) und zwischen Containern auszutauschen, schlägt Docker das Volume-Konzept vor. Ein Volume ist ein bestimmtes Verzeichnis eines Containers. Die Dateien in diesem Verzeichnis werden auf dem Hostcomputer und nicht im Dateisystem des Containers gespeichert.

Ein Datenvolumen ist ein spezielles Verzeichnis, das von einem oder mehreren Containern verwendet werden kann. Es umgeht das Standarddateisystem des Containers und bietet viele nützliche Funktionen:
(1) Datenmengen können zwischen Containern geteilt und wiederverwendet werden;
(2) Änderungen des Datenvolumens werden sofort wirksam;
(3) Aktualisierungen des Datenvolumens haben keine Auswirkungen auf das Image;
(4) Standardmäßig bleibt das Datenvolumen immer bestehen, auch wenn der Container gelöscht wird.

Hinweis: Die Verwendung von Datenvolumes ähnelt dem Mounten eines Verzeichnisses in Linux. Die Dateien im Verzeichnis, das als Mount-Punkt im Container angegeben ist, werden ausgeblendet und nur das gemountete Datenvolume kann angezeigt werden.

Erstellen und Verwenden von Datenvolumes

mkdir -p /root/volume1
mkdir -p /root/volume2
docker run -d -v /volume1 --name='centos5' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1 --name='centos6' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1 -v /root/volume2:/volume2 --name='centos7' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1:ro --name='centos8' docker-centos6.10-hadoop-spark

Verwenden Sie den Befehl „Docker Run“, um einen Container zu erstellen, geben Sie das Flag „-v“ an, um ein Datenvolume zu erstellen und es im Container zu mounten. Sie können mehrere Datenvolumes mounten. Sie können das schreibgeschützte Attribut des Volumes festlegen. Sie müssen kein Verzeichnis für die Serverzuordnung angeben, das System gibt das Verzeichnis automatisch an und Sie können den zugeordneten Pfad über „Docker Inspect“ anzeigen.

Geben Sie diese Container entsprechend ein und zeigen Sie die Verzeichnisse /volume1 und /volume2 an.

Datenvolumen teilen

Wenn Sie einem Container Zugriff auf die Datenvolumes eines anderen Containers gewähren möchten, können Sie dazu den Parameter -volumes-from verwenden.

Datenvolumencontainer

Wenn kontinuierlich aktualisierte Daten zwischen Containern geteilt werden müssen, empfiehlt es sich, einen Datenvolumencontainer zu erstellen.

Ein Datenvolumencontainer ist eigentlich ein normaler Container, der speziell dazu dient, Datenvolumen für die Einbindung anderer Container bereitzustellen.

(1) Erstellen Sie einen Datenvolumencontainer mit dem Namen dbdata

docker run -d -v /dbdata --name dbdata docker-centos6.10-hadoop-spark

(2) Verwenden Sie --volumes-from in anderen Containern, um das Datenvolumen im dbdata-Container zu mounten

docker run -d --volumes-from dbdata --name db1 docker-centos6.10-hadoop-spark
docker run -d --volumes-from dbdata --name db2 docker-centos6.10-hadoop-spark

Dies ermöglicht den Datenaustausch zwischen Containern.

Geben Sie diese Container entsprechend ein und zeigen Sie die Verzeichnisse /volume1 und /volume2 an.

4. Erstellen Sie Ihr eigenes Bild und veröffentlichen Sie es

Containeränderungen speichern und ein neues Container-Image übermitteln

Docker-Commit für Centos1 und Centos111

Senden Sie den vorhandenen Container, um ein neues Container-Image zu erstellen. Verwenden Sie Docker-Images, um das Centos111-Image anzuzeigen. Diese Methode erstellt ein neues Container-Image.

Spiegel anzeigen

Docker-Bilder

REPOSITORY TAG BILD ID ERSTELLT GRÖSSE

centos111 latest d691a75ee371 vor 23 Minuten 501,5 MB

Erstellen eines Containers basierend auf einem neuen Container-Image

docker run -d --name='centos111' centos111

Container anzeigen

Docker-Inspektion Centos111

Exportieren und Importieren von Images Wenn Sie ein Image von einem Computer auf einen anderen migrieren müssen, müssen Sie das Image exportieren und importieren.
Maschine A

Docker speichern docker-centos6.10-hadoop-spark > docker-centos6.10-hadoop-spark2.tar

oder

docker speichern -o docker-centos6.10-hadoop-spark docker-centos6.10-hadoop-spark2.tar

Verwenden Sie den scp-Befehl, um docker-centos6.10-hadoop-spark2.tar auf die gleiche Weise wie bei anderen Methoden auf Maschine B zu kopieren.

Docker-Last < docker-centos6.10-hadoop-spark2.tar

oder

Docker-Laden -i Docker-Centos6.10-Hadoop-Spark2.tar

Veröffentlichen von Container-Images

Docker Push Centos6.8-Lampe1

Veröffentlichen Sie den Container im Netzwerk.

5. Docker-Netzwerk

Wenn Docker startet, erstellt es auf dem Hostcomputer eine virtuelle Netzwerkschnittstelle mit dem Namen docker0. Es wählt nach dem Zufallsprinzip eine unbenutzte Hostadresse und Subnetzmaske aus den in RFC 1918 definierten privaten Adressen aus und weist sie docker0 zu. Die Standardauswahl ist 172.18.0.1/16. Eine 16-Bit-Subnetzmaske bietet 65534 IP-Adressen für den Container.

Docker0 ist keine normale Netzwerkschnittstelle, sondern eine virtuelle Ethernet-Brücke, die Pakete automatisch zwischen anderen an sie angebundenen Netzwerkkarten weiterleitet und es Containern so ermöglicht, mit dem Host und untereinander zu kommunizieren.

Jedes Mal, wenn Docker einen Container erstellt, erstellt es ein Paar Peer-Schnittstellen, die den beiden Enden einer Pipe ähneln, wo eine Seite von der anderen Seite gesendete Datenpakete empfangen kann. Docker verbindet eine der Peer-Schnittstellen als eth0 mit dem Container und hält die andere je nach Namespace des Hosts mit einem eindeutigen Namen wie vethAQI2QT. Durch Binden aller veth*-Schnittstellen an die Docker0-Bridge-NIC erstellt Docker ein gemeinsames virtuelles Subnetz zwischen dem Host und allen Docker-Containern.

Docker NAT-Netzwerk

Standardmäßig greift der Docker-Container über NAT auf das Netzwerk zu. Beim Start von Docker wird auf dem Host eine virtuelle Netzwerkschnittstelle mit dem Namen docker0 erstellt. Docker0 ist lediglich eine virtuelle Ethernet-Brücke, die Datenpakete automatisch zwischen anderen an sie gebundenen Netzwerkkarten weiterleitet. Sie ermöglicht Containern und Hosts die Kommunikation untereinander und zwischen Containern.

Die Gateway-Adresse von Docker0 lautet 172.18.0.1, die Maske besteht aus 16 Bit und es werden 65534 IP-Adressen bereitgestellt.

Im NAT-Modus kann der Container der virtuellen Maschine auf das externe Netzwerk (außerhalb der Hostmaschine) zugreifen, andere Maschinen als die Hostmaschine können jedoch nicht auf das Container-Intranet zugreifen.

Docker Bridge-Netzwerk

Docker-Container können über die Bridge auf das Netzwerk zugreifen.

Im Bridge-Modus kann der Container der virtuellen Maschine auf das externe Netzwerk (außerhalb der Host-Maschine) zugreifen, und Maschinen außerhalb der Host-Maschine können auch auf das Container-Intranet zugreifen.

6. Docker-Rohrleitungen

Die Netzwerkfunktion von Docker selbst ist relativ einfach und kann viele komplexe Anwendungsszenarien nicht erfüllen. Daher gibt es viele Open-Source-Projekte, die zur Verbesserung der Netzwerkfunktionen von Docker verwendet werden, wie etwa Pipework, Weave, Flannel usw.

Pipework ist ein vom Docker-Ingenieur Jérôme Petazzoni entwickeltes Tool zur Netzwerkkonfiguration für Docker. Es ist in mehr als 200 Shell-Zeilen implementiert und einfach zu verwenden.

Installation von Rohrleitungen

Git-Klon https://github.com/jpetazzo/pipework
cp Rohrleitung/Rohrleitung /bin/

oder

wget [http://172.17.1.240/docker/software/pipework](http://172.17.1.240/docker/software/pipework)
chmod a+x Rohrleitungen
cp Rohrleitung /bin/

Ausführen des Containers

docker run -d --net='none' --name='centos9' docker-centos6.10-hadoop-spark

Konfigurieren Sie das Containernetzwerk und verbinden Sie es mit der Bridge Docker0. Das Gateway wird durch Hinzufügen von @ nach der IP-Adresse angegeben.

Rohrleitung Docker0 Centos9 172.18.0.100/[email protected]

7. Docker-Netzwerk-Port-Mapping

Wenn der Container das virtuelle Netzwerk docker0 verwendet, ist das Netzwerk des Containers 172.17.0.0/16. Der Container kann über NAT auf das externe Netzwerk zugreifen; das externe Netzwerk kann jedoch nicht auf das interne Netzwerk zugreifen. Wenn der Container das virtuelle Netzwerk br0 verwendet, können sich der Container und der Server im selben Netzwerkadresssegment befinden. Der Container kann auf das externe Netzwerk zugreifen und das externe Netzwerk kann auch auf das Containernetzwerk zugreifen.
Bei Containern, die das virtuelle Netzwerk Docker0 verwenden, kann die Portzuordnung verwendet werden, um dem externen Netzwerk den Zugriff auf bestimmte Ports des Containers zu ermöglichen.

Ausführen des Containers

docker run -d -p 38022:22 --name='centos10' docker-centos6.10-hadoop-spark

Container verbinden

ssh localhost -p 38022

Auf anderen Servern können Sie auf den Container zugreifen, indem Sie auf den physischen Server und den Port zugreifen. Sie können mehrere Ports gleichzeitig zuordnen.
Ausführen des Containers

docker run -d -p 38022:22 -p 38080:80 --name='centos11' docker-centos6.10-hadoop-spark

Das Implementierungsprinzip besteht in der Weiterleitung über iptables auf dem Server. Natürlich können Sie auch die gesamte Container-IP-Adresse über iptables weiterleiten.

4. Fazit

Da Container auf Prozessebene angesiedelt sind, bieten sie gegenüber virtuellen Maschinen zahlreiche Vorteile.

(1) Wenn eine Anwendung in einem schnellen Container gestartet wird, wird direkt ein Prozess im zugrunde liegenden System gestartet und nicht ein Prozess innerhalb der virtuellen Maschine. Daher entspricht das Starten eines Containers dem Starten eines Prozesses auf dem lokalen Computer und nicht dem Starten eines Betriebssystems, was viel schneller ist.

(2) Geringerer Ressourcenverbrauch: Container belegen nur die erforderlichen Ressourcen und keine ungenutzten Ressourcen. Virtuelle Maschinen sind vollständige Betriebssysteme und belegen daher zwangsläufig alle Ressourcen. Darüber hinaus können mehrere Container Ressourcen gemeinsam nutzen, während virtuelle Maschinen über exklusive Ressourcen verfügen.

(3) Geringe Größe: Ein Container muss nur die von ihm verwendeten Komponenten enthalten, während eine virtuelle Maschine ein Paket des gesamten Betriebssystems ist. Daher ist die Containerdatei viel kleiner als die Datei der virtuellen Maschine.
Kurz gesagt sind Container ein bisschen wie leichte virtuelle Maschinen, die eine virtualisierte Umgebung bereitstellen können, allerdings zu viel geringeren Kosten.

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:
  • Tutorial zur Docker-Installation und einfachen Verwendung
  • Erste Schritte mit IPython und Docker-Containern
  • Eine vollständige Anleitung zur Docker-Befehlszeile (18 Dinge, die Sie wissen müssen)
  • Eine Kurzanleitung zu Docker
  • Zweistündiges Docker-Einführungstutorial
  • Einführung in Docker-Container
  • Einfaches Einführungstutorial zur Installation und Anwendung von Docker
  • Docker-Grundlagen

<<:  Snake-Spiel mit nativem JS schreiben

>>:  Beispiel zur Optimierung der MySQL-Einfügeleistung

Artikel empfehlen

Einführung in den Aufbau von NFS-Diensten unter Centos7

Inhaltsverzeichnis 1. Server 2. Kunde 3. Testdien...

Detaillierte Erläuterung der praktischen Anwendung des HTML-Tabellenlayouts

Wann wird die Tabelle eingesetzt? Tabellen werden...

MySQL lernen: Drei Paradigmen für Anfänger

Inhaltsverzeichnis 1. Paradigmenfundament 1.1 Der...

Zusammenfassung der grundlegenden Wissenspunkte der Linux-Gruppe

1. Grundlegende Einführung in die Linux-Gruppe Un...

JS-Version des Bildlupeneffekts

In diesem Artikel wird der spezifische JS-Code zu...

Einführung in CSS-Stileinführungsmethoden und ihre Vor- und Nachteile

Drei Möglichkeiten, CSS einzuführen 1. Inline-Sti...

So aktivieren Sie die MySQL-Remoteverbindung auf einem Linux-Server

Vorwort Lernen Sie MySQL, um frühere Nicht-MK-Dat...

So ändern Sie den Punkt im WeChat-Applet Swiper-Dot in einen Slider

Inhaltsverzeichnis Hintergrund Zieleffekt Ideen e...

Element Tabelle Tabellenkomponente Mehrfeld (Mehrspalten) Sortiermethode

Inhaltsverzeichnis brauchen: Aufgetretene Problem...

Untersuchung des Problems der Flip-Navigation mit geneigter Maus

In diesem Artikel analysieren wir als Beispiel die...

Detaillierte Erläuterung der Verwendung von Docker-Tag und Docker-Push

Detaillierte Erklärung des Docker-Tags Die Verwen...

Tutorial und Praxis zu den virtuellen Speichereinstellungen unter Linux

Was ist virtueller Speicher? Zunächst werde ich e...