Einführung
Docker ist ein Dienstprogramm, mit dem Sie einen Container erstellen können für laufende Anwendungen. Ein Docker-Container ist eine vollständig abgeschlossene virtuelle Maschine.
Dieser Leitfaden zeigt Ihnen drei Methoden für SSH in einen Docker-Container und zum Ausführen von Befehlen.
Voraussetzungen
- Ein Linux-System, auf dem Docker ausgeführt wird
- Vorkonfigurierte Container geladen und ausgeführt
- Zugriff auf ein Terminalfenster/eine Eingabeaufforderung (Strg + Alt +T oder Strg + Alt +F2 )
- Ein Benutzerkonto mit sudo Privilegien
Methode 1:Verwenden Sie docker exec, um Befehle in einem Docker-Container auszuführen
Die docker exec
Befehl führt einen angegebenen Befehl in einem bereits ausgeführten Container aus. Sie können damit eine SSH-Verbindung zu einem Docker-Container herstellen, indem Sie eine Bash-Shell erstellen (eine Shell, in der Sie Befehle eingeben können).
Die grundlegende Syntax für die Verwendung von docker exec
um einen Befehl in Containern auszuführen ist:
docker exec [options] [container] [command]
Beginnen Sie damit, ein Docker-Image zu ziehen, falls Sie dies noch nicht getan haben. Beispielsweise können Sie Nginx laden :
sudo docker pull nginx
Führen Sie dann das Bild aus:
sudo docker run ––name nginx–test –d nginx
Alle ausgeführten Container zur Überprüfung auflisten:
sudo docker ps
Sie sollten jetzt Ihr nginx-test-Image geladen sehen.
Geben Sie Folgendes ein, um Zugriff auf diesen Docker-Container zu erhalten und Befehle auszuführen:
sudo docker exec –it nginx-test /bin/bash
Jetzt sind Sie beim nginx-test angemeldet Container. Daher werden alle von Ihnen eingegebenen Befehle in diesem Container ausgeführt. Das –i
Option gibt interaktiv an , und das –t
ermöglicht eine Terminal-Typisierung Schnittstelle.
Methode 2:Verwenden Sie den Docker-Attach-Befehl, um eine Verbindung zu einem laufenden Container herzustellen
Das docker attach
Der Befehl verknüpft einen lokalen Eingabe-, Ausgabe- und Fehlerstrom mit einem Container. Standardmäßig wird es in einer Bash gestartet Schale . Um eine Verbindung zu einem laufenden Container herzustellen, geben Sie Folgendes ein:
sudo docker attach container_Name
Im Beispiel unten verbindet sich das System mit nginx-test Behälter:
sudo docker attach nginx-test
Sobald der Befehl ausgeführt ist, arbeiten Sie im Container. Alle von Ihnen ausgeführten Befehle wirken sich auf die virtuelle Docker-Umgebung aus.
Methode 3:Verwenden Sie SSH, um eine Verbindung zu einem Docker-Container herzustellen
Sie können sich mit SSH (Secure Shell) mit einem Docker-Container verbinden. Normalerweise wird SSH verwendet, um sich über ein Netzwerk remote mit einem Server zu verbinden. Die Technologie funktioniert genauso, wenn Sie sich mit einem virtuellen Docker-Container auf Ihrem System verbinden.
Schritt 1:Aktivieren Sie SSH auf dem System
Beginnen Sie mit der Installation und Aktivierung des SSH-Dienstes:
SSH auf Ubuntu 18.04 aktivieren:
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
SSH auf CentOS 7 aktivieren:
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
Schritt 2:IP-Adresse des Containers abrufen
Rufen Sie die IP-Adresse des Containers mithilfe von docker inspect
ab Befehl und Herausfiltern der Ergebnisse.
Verwenden Sie für moderne Docker-Engines den Befehl:
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
Führen Sie für ältere Docker-Engines Folgendes aus:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
Das System zeigt die IP-Adresse wie im obigen Bild zu sehen an.
Schritt 3:SSH in den Docker-Container
Pingen Sie die IP-Adresse, um sicherzustellen, dass sie verfügbar ist:
ping –c 3 172.17.0.2
Verwenden Sie das SSH-Tool, um eine Verbindung zum Image herzustellen:
ssh [email protected]
Das System sollte zur Eingabe eines Passworts des Root-Benutzers für diesen Container auffordern. Wenn dort steht Verbindung abgelehnt , ist der Container wahrscheinlich nicht für SSH bereitgestellt. Wenn sich die Eingabeaufforderung ändert, sind Sie jetzt über SSH verbunden und können Befehle im Container ausführen.