Website-Suche

So verbinden Sie sich über SSH mit dem Docker-Container


Nach der Installation von Docker auf Fedora, AlmaLinux, Manjaro oder einer anderen Distribution ist es an der Zeit, weitere Container zu installieren. Sobald Sie einen Docker-Container auf einem Linux-System eingerichtet und ausgeführt haben, müssen Sie wahrscheinlich unter anderem Befehle innerhalb des Containers ausführen. Auf diese Weise können Sie den Container ähnlich wie einen physischen Computer verwenden, mit dem Unterschied, dass Docker bereits den größten Teil der Einrichtungsarbeit für uns erledigt hat.

Es stehen bereits zwei Befehle zur Verfügung, mit denen wir Befehle auf einem Docker-Container ausführen können. Der erste ist docker exec, und der zweite Befehl, mit dem wir an einen laufenden Container anhängen können, ist docker attach. Diese Befehle reichen in der Regel aus, aber Sie befinden sich möglicherweise in einem Szenario, in dem Sie es vorziehen, SSH zu verwenden, um eine Verbindung mit dem Docker-Container herzustellen und ihn zu verwalten.

Nicht alle Docker-Container sind für die Ausführung von SSH bereitgestellt. Normalerweise sind Docker-Container sehr leichtgewichtig und nur so programmiert, dass sie eine Sache tun. Einige Docker-Container lassen jedoch SSH zu, was die Verwaltung des Containers erheblich vereinfachen kann. In dieser Anleitung erfahren Sie, wie Sie über SSH vom Hostsystem aus auf der Linux-Befehlszeile eine Verbindung zu einem Docker-Container herstellen.

In diesem Tutorial lernen Sie:

  • So verbinden Sie sich über SSH mit einem laufenden Docker-Container

Herstellen einer Verbindung zu einem laufenden Docker-Container über SSH unter Linux

Verbinden Sie sich über SSH mit dem Docker-Container

In diesem Beispiel haben wir bereits Docker und ein NGINX-Image mit dem Befehl docker pull nginx installiert. Befolgen Sie die nachstehenden Schritt-für-Schritt-Anweisungen, um zu sehen, wie wir die IP-Adresse des Containers ermitteln, und verwenden Sie dann den SSH-Befehl, um eine Verbindung mit dem ausgeführten Container herzustellen.

  1. Zunächst muss der Docker-Container aktiv ausgeführt werden. Stellen Sie sicher, dass Sie es bereits mit dem folgenden Befehl gestartet haben. Beachten Sie noch einmal, dass wir ein NGINX-Image verwenden, aber Sie können den Namen Ihres eigenen Images in diesem Befehl und in zukünftigen Befehlen ersetzen.

    docker run --name nginx -d nginx
    
  2. Überprüfen Sie mit diesem Befehl, ob der Container ausgeführt wird, sowie den Namen des Containers.

    docker ps
    
  3. Anzeigen der aktuell laufenden Docker-Container auf unserem System

  4. Mit dem folgenden Befehl können wir nun die IP-Adresse unseres NGINX-Containers ermitteln.

    docker inspect -f "{{ .NetworkSettings.IPAddress }}" nginx
    
  5. Hier ermitteln wir die IP-Adresse des Docker-Containers, in den wir SSH einsteigen möchten

  6. In unserem Fall hat der NGINX-Container die IP-Adresse 172.17.0.2. Wir können nun versuchen, uns über SSH und das Root-Konto mit dieser IP-Adresse zu verbinden.

    ssh root@172.17.0.2
    
  7. An diesem Punkt stellen Sie entweder erfolgreich eine Verbindung mit dem ausgeführten Container her oder erhalten die Fehlermeldung "Verbindung verweigert". Gehen Sie im Fehlerfall mit den folgenden Schritten vor, um einen SSH-Server auf dem Container einzurichten.

  8. Wenn SSH nicht funktioniert, müssen wir sicherstellen, dass die Software auf dem Container installiert ist. Stellen Sie mit dem folgenden Befehl eine Verbindung zum Container her.

    docker exec -it nginx /bin/bash
    
  9. Installieren Sie dann SSH darauf. Wir verwenden in diesem Beispiel den apt-Paketmanager, aber Sie müssen den Befehl möglicherweise anpassen, wenn Ihr Container einen anderen Paketmanager verwendet.

    apt update && apt -y install openssh-server
    
  10. Konfigurieren Sie als Nächstes den Container so, dass wir uns per SSH beim Root-Konto anmelden können.

    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    
  11. Vergessen Sie nicht, das Root-Passwort zu ändern, damit Sie sich anmelden können.

    passwd
    
  12. Starten Sie abschließend den SSH-Dienst auf dem Container.

    /etc/init.d/ssh start
    
  13. Jetzt können Sie SSH vom Host-Computer aus herstellen, indem Sie die IP-Adresse angeben, die Sie zuvor festgelegt haben, und das Root-Passwort verwenden, für das Sie das Passwort gerade konfiguriert haben.

    ssh root@172.17.0.2
    
  14. Wir können jetzt erfolgreich SSH in den Docker-Container einbinden

Das ist alles, was dazu gehört. Jetzt können Sie sich über SSH mit Ihrem laufenden Container verbinden, um Befehle auszuführen und ihn zu verwalten. Natürlich sollte die Methode zur Verwendung des Befehls docker exec auch weiterhin funktionieren und kann das Gleiche erreichen.

Abschließende Gedanken

In dieser Anleitung haben wir gesehen, wie man sich vom Hostsystem aus per SSH mit einem laufenden Docker-Container verbindet. Docker bietet uns bereits mehrere Möglichkeiten, eine Verbindung zu einem Container herzustellen, aber die Möglichkeit, SSH in Container zu integrieren, kann für einige Situationen nützlich sein. Der knifflige Teil ist, dass die meisten Container SSH noch nicht installiert haben, da sie normalerweise mit den absoluten Mindestanforderungen konfiguriert sind. Dies erfordert ein paar zusätzliche Schritte unsererseits, aber wie Sie hier gesehen haben, ist es nicht so schwer, dies zu tun.

Verwandte Artikel: