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
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. 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. 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: 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. 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. 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. 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. 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:
|
<<: Snake-Spiel mit nativem JS schreiben
>>: Beispiel zur Optimierung der MySQL-Einfügeleistung
Wenn der Umfang der Docker-Bereitstellung zunimmt...
Vorwort Meta ist ein Hilfstag im Kopfbereich der ...
Inhaltsverzeichnis 1. Server 2. Kunde 3. Testdien...
Wann wird die Tabelle eingesetzt? Tabellen werden...
Seite: Basis: <Vorlage> <div Klasse=&quo...
Inhaltsverzeichnis 1. Paradigmenfundament 1.1 Der...
1. Grundlegende Einführung in die Linux-Gruppe Un...
In diesem Artikel wird der spezifische JS-Code zu...
Drei Möglichkeiten, CSS einzuführen 1. Inline-Sti...
Vorwort Lernen Sie MySQL, um frühere Nicht-MK-Dat...
Inhaltsverzeichnis Hintergrund Zieleffekt Ideen e...
Inhaltsverzeichnis brauchen: Aufgetretene Problem...
In diesem Artikel analysieren wir als Beispiel die...
Detaillierte Erklärung des Docker-Tags Die Verwen...
Was ist virtueller Speicher? Zunächst werde ich e...