Unterschiede zwischen Docker und Docker MachineDocker ist eine Client-Server-Architekturanwendung und hat einen offiziellen Namen: Docker Engine. Docker ist lediglich ein Spitzname für Docker Engine. Natürlich hat Docker auch andere Bedeutungen, beispielsweise den Namen eines Unternehmens. Der Einfachheit halber ist Docker in diesem Artikel gleichbedeutend mit Docker Engine. Wenn wir über Docker sprechen, müssen wir wissen, dass es aus drei Teilen besteht:
Die folgende Abbildung zeigt deutlich die Beziehung zwischen ihnen: Docker Machine ist ein Tool zum Installieren und Verwalten von Docker. Es verfügt über ein eigenes Befehlszeilentool: Docker-Machine. Docker-Daemon-SocketDa der Docker-Client über die REST-API mit dem Docker-Daemon kommuniziert, schauen wir uns die Methoden an, die er verwenden kann:
Wir können 1 und 2 einfach als eine Art der Kommunikation zwischen Prozessen auf demselben Host verstehen. Punkt 3 ist leicht zu verstehen: netzwerkübergreifende Kommunikation über das TCP-Protokoll. Da 1 und 2 für die Interprozesskommunikation auf derselben Maschine verwendet werden, können wir davon ausgehen, dass der Docker-Client und der Docker-Daemon, die auf demselben Host installiert sind, auf diese Weise kommunizieren. Dies ist tatsächlich der Fall. Wir können die Startkonfiguration des Docker-Daemons anzeigen, die standardmäßig bei der Installation von Docker hinzugefügt wurde, und die Datei /etc/systemd/system/multi-user.target.wants/docker.service öffnen: Das -H in der Abbildung wird verwendet, um den Socket anzugeben, auf dem der Docker-Daemon lauscht. Der hier angegebene Typ ist die System-Socket-Aktivierung. Für die Kommunikation mit den Typen 1 und 2 muss der Prozess über Root-Berechtigungen verfügen. Dies ist auch der Hauptgrund, warum während des Docker-Installationsprozesses automatisch ein Benutzer und eine Benutzergruppe mit Root-Berechtigungen erstellt werden. Der neu erstellte Benutzer und die Benutzergruppe heißen Docker. Es wird empfohlen, alle Benutzer, die Docker betreiben müssen, zu dieser Gruppe hinzuzufügen. Andernfalls tritt beim Ausführen des Befehls das folgende Problem auf: Wir können auch mehrere -H-Parameter gleichzeitig angeben, damit der Docker-Daemon gleichzeitig auf verschiedene Socket-Typen hört. Um beispielsweise einen Listener für TCP-Port 2376 hinzuzufügen, können Sie die folgenden Befehlszeilenparameter verwenden: $ sudo dockerd -H fd:// -H tcp://0.0.0.0:2376 Führen Sie den obigen Befehl aus und überprüfen Sie den Port, auf dem die Maschine lauscht: An diesem Punkt können wir vom Docker-Client auf dem Remote-Host auf Port 2376 dieses Hosts zugreifen. Umgebungsvariable DOCKER_HOSTDie Standardkonfiguration des Docker-Clients besteht darin, auf den lokalen Docker-Daemon zuzugreifen. Wenn Sie die Variable DOCKER_HOST angeben, greift der Docker-Client auf den in dieser Variable angegebenen Docker-Daemon zu. Sehen wir uns den Docker-Machine-Env-Befehl noch einmal an: Der ausgeführte Befehl $ eval $(docker-machine env krdevdb) legt die Umgebungsvariable DOCKER_HOST fest. Beheben von SicherheitsproblemenUnser Docker-Daemon lauscht auf dem TCP-Port, aber leider haben wir derzeit noch keine Schutzmaßnahmen ergriffen. Daher kann jeder Docker-Client über den TCP-Port mit unserem Docker-Daemon interagieren, was offensichtlich nicht akzeptabel ist. Die Lösung besteht darin, die TLS-Zertifikatauthentifizierung sowohl für den Docker-Daemon als auch für den Docker-Client zu aktivieren. Auf diese Weise wird die Kommunikation zwischen dem Docker-Daemon und dem Docker-Client verschlüsselt und nur der Client mit einem bestimmten installierten Zertifikat kann mit dem entsprechenden Docker-Daemon interagieren. Damit sind die Vorbereitungen für diesen Artikel abgeschlossen. Als Nächstes werden wir uns mit Docker Machine befassen. Befehl zum Erstellen einer Docker-MaschineDer Befehl „Create“ führt je nach Docker Machine-Treiber unterschiedliche Vorgänge aus. Zwei Schritte sind hier jedoch wichtiger für uns: docker-machine führt die folgenden Vorgänge auf dem von Ihnen angegebenen Host aus:
Docker-Daemon konfigurieren Der Docker-Installationsprozess ist nichts Geheimnisvolles, deshalb werde ich hier nicht ins Detail gehen. Wir konzentrieren uns auf die Konfiguration des Docker-Daemons. Bei genauerem Hinsehen stellen wir fest, dass der von der Docker-Maschine installierte Docker ein zusätzliches Docker-bezogenes Verzeichnis im Verzeichnis /etc/systemd/system hat: docker.service.d. In diesem Verzeichnis gibt es nur eine Datei, 10-machine.conf: Nun, das Vorhandensein von -H tcp://0.0.0.0:2376 hier überrascht uns nicht wirklich. Nach all unseren Vorbereitungen sollte dies eine Selbstverständlichkeit sein. Die mit --tls beginnenden Parameter beziehen sich hauptsächlich auf Zertifikate. Wir werden sie später in den Sicherheitseinstellungen ausführlich vorstellen. Etwas verwirrend ist /usr/bin/docker im obigen Bild. Die neueste Version von Docker Machine verwendet noch die alte Methode zum Einrichten des Docker-Daemons. Dies wird hoffentlich in der nächsten Version aktualisiert. Diese Konfigurationsdatei ist von entscheidender Bedeutung, da sie die Standardkonfigurationsdatei für die Docker-Installation überschreibt und dadurch den Docker-Daemon in der von Docker Machine angegebenen Weise startet. Jetzt haben wir einen Docker-Daemon, auf den remote zugegriffen werden kann. Zertifikat generieren Wir sehen vier Parameter, die mit --tls beginnen, in der Konfigurationsdatei des Docker-Daemons, nämlich --tlsverify, --tlscacert, --tlscert und –tlskey. Die Option --tlsverify weist den Docker-Daemon an, den Remote-Client über TLS zu überprüfen. Die anderen drei Parameter geben jeweils den Pfad einer Datei im PEM-Format an. Überprüfen Sie die angegebenen Dateipfade: Beim Vergleich mit dem manuell installierten Docker werden Sie feststellen, dass diese drei Dateien im Verzeichnis /etc/docker nicht vorhanden sind. Sie werden zweifellos von Docker Machine generiert, hauptsächlich um die TLS-Verifizierungsfunktion des Docker-Daemons zu aktivieren. Kehren wir nun zum Host zurück, auf dem Docker Machine installiert ist. Beim Überprüfen des Verzeichnisses /home/nick/.docker/machines/krdevdb habe ich einige Dateien mit demselben Namen gefunden (ca.pem, server-key.pem und server.pem). Ich habe sie mit den Dateien auf dem Host drdevdb verglichen und festgestellt, dass sie identisch sind! Schauen wir uns dieses Bild noch einmal an: Zusätzlich zu dem DOCKER_HOST, der uns beschäftigt hat, gibt es drei weitere Umgebungsvariablen. DOCKER_TLS_VERIFY weist den Docker-Client an, die TLS-Verifizierung zu aktivieren. DOCKER_CERT_PATH gibt das Verzeichnis der Dateien an, von denen die TLS-Verifizierung abhängt. Dabei handelt es sich um das Verzeichnis /home/nick/.docker/machines/krdevdb, das wir uns zuvor angesehen haben. An diesem Punkt ist das Sicherheitsproblem, das uns beschäftigt hat, endlich erklärt: Wenn Docker Machine den Befehl „Erstellen“ ausführt, generiert es eine Reihe von geheimen Schlüsseln und digitalen Zertifikatsdateien (*.pem), um die Sicherheit zu gewährleisten. Diese Dateien werden lokal und auf dem Remote-Docker-Host gespeichert. Die lokale Datei wird zum Konfigurieren des Docker-Clients verwendet, und die Datei auf dem Remote-Host wird zum Konfigurieren des Docker-Daemons verwendet, sodass beide Seiten das TLS-Verifizierungszeichen setzen, um eine sichere Kommunikation zu erreichen. ZusammenfassenWie Sie dem vorherigen Teil dieses Artikels entnehmen können, bietet Docker tatsächlich alles, was bereitgestellt werden sollte, die Konfiguration ist jedoch mühsamer! Was die Benutzer jedoch immer benötigen, ist eine einfachere und leichtere Konfiguration. Aus Benutzersicht ist Docker Machine daher wirklich cool. Mit einem Befehl können Sie nicht nur die virtuelle Maschine und Docker installieren, sondern auch viele Konfigurationen abschließen, die manuell nur mühsam durchzuführen wären. Dann folgen ein paar klare, einfache Befehle. Dann können die Schüler Spaß haben! Dies ist das Ende dieses ausführlichen Artikels über Docker Machine. Weitere Informationen zu Docker Machine finden Sie in den vorherigen Artikeln von 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:
|
<<: JavaScript imitiert den Taobao-Lupeneffekt
Als nächstes werde ich Java+Tomcat auf Centos7 in...
<br />Dies ist ein Artikel, den ich vor lang...
1. Die Farbe der Bildlaufleiste unter xhtml Im Ori...
Inhaltsverzeichnis Grundlegende HTML-Struktur Gen...
Ich bin kürzlich bei der Arbeit auf ein Problem g...
Vorbereiten 1. Laden Sie das erforderliche Instal...
Die MySQL-Fremdschlüsseleinschränkung (FOREIGN KE...
1. Dynamische Komponenten <!DOCTYPE html> &...
Inhaltsverzeichnis Vorwort Untergeordnete Kompone...
Von der Entwicklung bis zur Bereitstellung: Mache...
Installieren Sie schnell die Tensorflow-Umgebung ...
Inhaltsverzeichnis 1. Technologieauswahl 2. Techn...
1. Ziehen Sie das Bild Docker-Pull-Registrierung....
Inhaltsverzeichnis Vorwort Architektur auf einen ...
1. Laden Sie die entsprechende Installationsdatei...