Detaillierte Erklärung der Docker-Maschinennutzung

Detaillierte Erklärung der Docker-Maschinennutzung

Docker-Machine ist ein offiziell von Docker bereitgestelltes Docker-Verwaltungstool.

Dies lässt sich ganz einfach mit Docker-Machine erledigen:

Installieren und Ausführen von Docker auf Windows- und MAC-Plattformen

Erstellen und Verwalten mehrerer Docker-Hosts

Aufbau eines Schwarmclusters

Die Umgebung ist Virtualbox, installiert unter Win, CentOS7 installiert von Virtualbox, Netzwerkmodus NAT+Hostonly

ip:192.168.56.102 (nur Host)

1. Installieren Sie Docker-Machine:

curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
chmod +x /tmp/docker-machine &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

2. Überprüfen Sie die Docker-Maschinenversion:

# Docker-Maschinenversion
[root@docker ~]# Docker-Maschinenversion
Docker-Machine-Version 0.13.0, Build 9ba6da9

3. Erstellen Sie eine Maschine in der CentOS7-Umgebung:

[root@localhost ~]# docker-machine erstellen -d virtualbox default
CA erstellen: /root/.docker/machine/certs/ca.pem
Client-Zertifikat erstellen: /root/.docker/machine/certs/cert.pem
Es werden Prüfungen vor der Erstellung ausgeführt …
Fehler bei der Prüfung vor der Erstellung: „VBoxManage nicht gefunden. Stellen Sie sicher, dass VirtualBox installiert ist und VBoxManage im Pfad liegt.“

Es wurde jedoch ein Fehler gemeldet. Es wurde angenommen, dass die von Virtualbox installierte CentOS7-Umgebung den Virtualbox-Treiber unterstützt. Es wurde jedoch festgestellt, dass die Umgebungsinstallation den Virtualbox-Treiber unterstützt.

Um den Virtualbox-Treiber zu verwenden, müssen Sie Virtualbox installieren. Die Lösung für Ubuntu lautet:

Daher verwenden wir den generischen Treiber. Weitere Einzelheiten finden Sie auf der offiziellen Website: https://docs.docker.com/machine/drivers/generic/

[root@localhost ~]# docker-machine erstellen -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --

generischer-ssh-benutzer=root-VM
Es werden Prüfungen vor der Erstellung ausgeführt …
Maschine erstellen...
(vm) SSH-Schlüssel importieren …
Warten, bis die Maschine läuft. Dies kann einige Minuten dauern …
Betriebssystem der erstellten Instanz wird erkannt …
Warte auf die Verfügbarkeit von SSH ...
Fehler beim Erstellen der Maschine: Fehler beim Erkennen des Betriebssystems: Zu viele Wiederholungsversuche warten auf Verfügbarkeit von SSH. Letzter Fehler: Maximale Anzahl von Wiederholungsversuchen (60) überschritten
--generic-ip-address=192.168.56.102: Die IP hier bezieht sich auf die lokale Maschine. Wenn Sie sie für andere Remote-Docker-Hosts installieren müssen, können Sie sie in die IP eines anderen Docker-Hosts ändern (hier ist die lokale Erstellung der Docker-Maschine).

Trotzdem tritt ein Fehler auf. Dies liegt daran, dass eine SSH-Authentifizierung auch erforderlich ist, wenn Docker-Machine eine Maschine für den lokalen Computer erstellt:

[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-Kopie-ID [email protected]

Senden Sie das Kennwort an sich selbst und fahren Sie dann mit der Erstellung der Maschine fort:

[root@localhost ~]# docker-machine erstellen -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm
Es werden Prüfungen vor der Erstellung ausgeführt …
Maschine erstellen...
(vm) SSH-Schlüssel importieren …
Warten, bis die Maschine läuft. Dies kann einige Minuten dauern …
Betriebssystem der erstellten Instanz wird erkannt …
Warte auf die Verfügbarkeit von SSH ...
Den Provisioner erkennen …
Bereitstellung mit CentOS ...
Zertifikate werden in das lokale Computerverzeichnis kopiert …
Zertifikate werden auf den Remotecomputer kopiert ...
Festlegen der Docker-Konfiguration auf dem Remote-Daemon ...
Verbindung zu Docker wird geprüft …
Docker ist einsatzbereit!
Um zu sehen, wie Sie Ihren Docker-Client mit der Docker-Engine verbinden, die auf dieser virtuellen Maschine läuft, führen Sie aus: docker-machine env vm

So, endlich ist die Maschine erfolgreich erstellt worden

Schauen Sie sich die Docker-Maschine an:

[root@localhost ~]# Docker-Maschine ls 
NAME AKTIV TREIBER STATUS URL SWARM DOCKER FEHLER
vm-generic Wird ausgeführt tcp://192.168.56.102:2376 v17.09.0-ce 

Zeigen Sie die Umgebungsvariablen der VM an:

[root@localhost ~]# Docker-Maschine Umgebung vm
exportiere DOCKER_TLS_VERIFY="1"
exportiere DOCKER_HOST="tcp://192.168.56.102:2376"
exportiere DOCKER_CERT_PATH="/root/.docker/machine/machines/vm"
exportiere DOCKER_MACHINE_NAME="vm"
# Führen Sie diesen Befehl aus, um Ihre Shell zu konfigurieren: 
# eval $(Docker-Maschine, Umgebung, VM)

Umgebungsvariablen laden:

[root@localhost ~]# eval $(Docker-Maschine Umgebung VM)

Verwenden Sie SSH, um sich beim Computer anzumelden:

[root@localhost ~]# docker-machine ssh --hilfe
Verwendung: Docker-Machine SSH [Argument …]
Melden Sie sich bei einem Computer mit SSH an oder führen Sie einen Befehl darauf aus.
Beschreibung:
Argumente sind [Maschinenname] [Befehl]
[root@localhost ~]# Docker-Maschine SSH VM
Letzte Anmeldung: Sa 4. Nov 2017 17:55:53 von 192.168.56.102
[root@vm ~] 

Erstellen Sie nun einen Container in der lokalen Umgebung und starten Sie ihn:

[root@localhost ~]# docker run -d --name=nginx nginx
[root@localhost ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
6e62975fab90 nginx „nginx -g 'daemon ...“ Vor etwa einer Minute 59 Sekunden aktiv 80/tcp nginx

Stellen Sie dann per SSH eine Remoteverbindung zur Docker-Maschine her:

[root@localhost ~]# Docker-Maschine SSH VM   
Letzte Anmeldung: Sa 4. Nov 2017 18:13:27 von 192.168.56.102
[root@vm ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
6e62975fab90 nginx „nginx -g 'daemon ...“ Vor etwa einer Minute Up Vor etwa einer Minute 80/tcp nginx

Sie können sehen, dass die Container-IDs im Docker-Host und im Docker-Machine-Host identisch sind

Verwenden Sie Docker-Machine, um Docker zu installieren und Container zu erstellen

Mit dem obigen Schritt erstellen Sie lokal eine Maschine für sich selbst. Erstellen Sie nun eine Docker-Maschine für den Remote-Docker-Host:
Umgebung: centos7, 192.168.101.14, Docker und Docker-Maschine unter VMware installiert, erstellen Sie eine Maschine für den Docker-Host 192.168.56.102:
(Die beiden IPs sind unterschiedlich und werden weitergeleitet, damit auf sie zugegriffen werden kann (die vordere ist die statische IP von NAT unter der VM und die hintere sind die beiden Netzwerkkarten von VirtualBox (nur NAT und Host)))

1. Authentifizieren Sie zunächst die SSH-Verbindung zwischen 192.168.101.14 und dem Host 192.168.56.102:

[root@docker ~]# ssh-keygen
[root@docker ~]# ssh-Kopie-ID [email protected]

2. Erstellen Sie eine Maschine:

[root@docker ~]# docker-machine erstellen -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root default
CA erstellen: /root/.docker/machine/certs/ca.pem
Client-Zertifikat erstellen: /root/.docker/machine/certs/cert.pem
Es werden Prüfungen vor der Erstellung ausgeführt …
Maschine erstellen...
(Standard) SSH-Schlüssel wird importiert …
Warten, bis die Maschine läuft. Dies kann einige Minuten dauern …
Betriebssystem der erstellten Instanz wird erkannt …
Warte auf die Verfügbarkeit von SSH ...
Den Provisioner erkennen …
Bereitstellung mit CentOS ...
Zertifikate werden in das lokale Computerverzeichnis kopiert …
Zertifikate werden auf den Remotecomputer kopiert ...
Festlegen der Docker-Konfiguration auf dem Remote-Daemon ...
Verbindung zu Docker wird geprüft …
Docker ist einsatzbereit!
Um zu sehen, wie Sie Ihren Docker-Client mit der Docker-Engine verbinden, die auf dieser virtuellen Maschine läuft, führen Sie aus: docker-machine env default

Führen Sie die Umgebungsvariablen aus und rufen Sie die Computerumgebung auf:

[root@docker ~]# Docker-Maschine Umgebung Standard
[root@docker ~]# eval $(docker-machine env Standard)

3. Zeigen Sie die erstellte Maschine an:

[root@docker ~]# Docker-Maschine ls
NAME AKTIV TREIBER STATUS URL SWARM DOCKER FEHLER
Standard - generisches Ausführen von tcp://192.168.56.102:2376 v17.09.0-ce 

Sie können die für den Remote-Host 192.168.56.102 erstellte Maschine in der Umgebung 192.168.101.14 sehen

4. Erstellen Sie einen Container:

[root@docker ~]# docker run -d --name=nginx nginx (kein nginx-Image lokal)
b1f08986f6d5dbb1ede699e915bde734bab278fbe70f93af06ec2267fae2fef3
[root@docker ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
b1f08986f6d5 nginx „nginx -g 'daemon ...“ vor 4 Sekunden Up 3 Sekunden 80/tcp nginx
5. Per SSH mit der Maschine verbinden:
[root@docker ~]# Docker-Maschine SSH-Standard
Letzte Anmeldung: Sa 4. Nov 2017 18:51:49 von 192.168.56.1
[root@Standard ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
b1f08986f6d5 nginx „nginx -g 'daemon ...“ vor 23 Sekunden Up 22 Sekunden 80/tcp nginx

Überprüfen Sie nun, ob der Container auf dem Remote-Host erstellt wurde:

[root@localhost ~]# docker ps -a
CA-Zertifikat "/root/.docker/machine/machines/default/ca.pem" konnte nicht gelesen werden: öffne /root/.docker/machine/machines/default/ca.pem: keine solche Datei oder kein solches Verzeichnis

Fehlerursache:

Da ich mir gerade eine Maschine unter 192.168.56.102 eingerichtet habe, habe ich die Umgebungsvariablen der vorherigen Maschine beibehalten. Obwohl ich sie jetzt gelöscht habe, habe ich die Umgebungsvariablen festgelegt. Stornieren Sie die Umgebungsvariablen, die ich gerade festgelegt habe:

[root@localhost ~]# DOCKER_TLS_VERIFY aufheben
[root@localhost ~]# DOCKER_CERT_PATH aufheben
[root@localhost ~]# DOCKER_MACHINE_NAME aufheben
[root@localhost ~]# DOCKER_HOST aufheben

Dann überprüfen Sie noch einmal:

[root@localhost ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
b1f08986f6d5 nginx „nginx -g 'daemon ...“ vor 8 Minuten Up 8 Minuten 80/tcp nginx

Es kann festgestellt werden, dass der Container erfolgreich für den Remote-Host erstellt wurde

Jetzt existiert das Image centos_nginx:v4 auf 192.168.101.14, aber der Remote-Host 192.168.56.102 hat dieses Image nicht. Erstellen Sie jetzt einen Container, um zu sehen, ob der Remote-Host erfolgreich erstellt werden kann?

[root@docker ~]# docker pull registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc:v4
[root@docker ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
nginx latest b72d63324dbb vor 13 Stunden 108 MB
registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 vor 2 Tagen 464 MB

Überprüfen Sie dann auf dem Remote-Host:

[root@localhost ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
nginx latest b72d63324dbb vor 13 Stunden 108 MB
registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 vor 2 Tagen 464 MB

Sie können sehen, dass die Bilder der beiden Hosts synchronisiert sind und die Container ebenfalls synchronisiert sind.

Docker unter VM kann Container für Docker unter VirtualBox erstellen und kann über Docker-Machine auch Container für andere Umgebungen wie die Cloud erstellen.

Zuvor verschwanden die Bilder von 192.168.101.14 aufgrund der Festlegung der Maschinenumgebungsvariable:

DOCKER_TLS_VERIFY aufheben
DOCKER_CERT_PATH aufheben
DOCKER_MACHINE_NAME aufheben
DOCKER_HOST aufheben

Führen Sie das Obige aus, um die Umgebungsvariable des Computers abzubrechen und zur ursprünglichen Umgebung zurückzukehren:

[root@docker ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
centos_init v1 383ff3502443 vor 26 Stunden 448 MB
centos_nginx v8 6f792dc07c35 vor 2 Tagen 464 MB
centos_nginx v7 9e875385d6be vor 2 Tagen 464 MB
centos_nginx v6 959fdf4d4288 vor 2 Tagen 464 MB
centos_nginx v5 5c1131306686 vor 2 Tagen 464 MB
registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 vor 2 Tagen 464 MB
192.168.101.14:5000/centos_nginx v4 6c5128aaff05 vor 2 Tagen 464 MB
centos_nginx v4 6c5128aaff05 vor 2 Tagen 464 MB
centos_nginx v3 0e49a2c0562f vor 2 Tagen 464 MB
centos_nginx v2 2031faf8894a vor 2 Tagen 464 MB
centos_nginx v1 78d18f16e757 vor 3 Tagen 464 MB
Registrierung aktuell 2ba7189700c8 vor 9 Tagen 33,3 MB
Ubuntu aktuell 747cb2d60bbe vor 3 Wochen 122 MB
centos latest 196e0ce0c9fb vor 7 Wochen 197MB

Wenn Sie zur Maschinenumgebung zurückkehren müssen, führen Sie die Maschinenumgebungsvariable weiterhin aus. Diese Methode isoliert lokale und Remote-Images und -Container gut.

Dies ist das Ende dieses Artikels über die detaillierte Verwendung von Docker-Maschinen in Docker. Weitere Informationen zur Verwendung von Docker-Maschinen 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:
  • So stellen Sie Docker remote mit Docker Machine bereit
  • Docker Machine erstellt einen virtuellen Azure-Host
  • Docker Maschine Deep Learning
  • Was ist Docker Machine?
  • Ausführliche Erklärung zur Docker-Maschine

<<:  Beispielcode für ein Mysql-SQL-Überwachungsskript für langsame Abfragen

>>:  Verständnis und Anwendung des Destrukturierungsoperators von JavaScript ES6

Artikel empfehlen

Einführung in die Rolle des HTML-Doctypes

Der Dokumentmodus verfügt über die folgenden zwei ...

So passen Sie CSS an den Vollbildmodus des iPhone an

1. Medienabfragemethode /*iPhone X-Anpassung*/ @m...

JavaScript implementiert den Div-Maus-Drag-Effekt

In diesem Artikel wird der spezifische Code für J...

Schritte zum Ändern des MySQL-Datenbankdatendateipfads unter Linux

Nach der Installation der MySQL-Datenbank mit der...

Installationsschritte für die chinesische Eingabemethode von Ubuntu 20.04

Dieser Artikel installiert die Google-Eingabemeth...

CSS verwendet radialen Farbverlauf zur Implementierung von Coupon-Stilen

In diesem Artikel erfahren Sie, wie Sie mithilfe ...

Schritte zum Kapseln von Element-UI-Popupkomponenten

Kapseln Sie el-dialog als Komponente ein Wenn wir...

MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung

Die MySQL-Fremdschlüsseleinschränkung (FOREIGN KE...

MySQL-Datenbank implementiert MMM-Hochverfügbarkeitsclusterarchitektur

Konzept MMM (Master-Master-Replikationsmanager fü...

Eine "klassische" Falle der MySQL UPDATE-Anweisung

Inhaltsverzeichnis 1. Problematische SQL-Anweisun...

jQuery implementiert Warenkorbfunktion

In diesem Artikelbeispiel wird der spezifische Co...