Android

Herstellen einer Verbindung mit einem Docker-Container

Nextcloud als Docker Container mit Traefik - Vollständiges Tutorial

Nextcloud als Docker Container mit Traefik - Vollständiges Tutorial

Inhaltsverzeichnis:

Anonim

Das Herstellen einer Verbindung zu einem laufenden Docker-Container ist hilfreich, wenn Sie sehen möchten, was im Container geschieht. Wenn der Docker-Container nicht wie erwartet funktioniert, können Sie eine Verbindung zum Container herstellen oder eine Shell zum Container ps und Befehle wie ps oder top ausführen. Sie können auch den Container betreten, neue Pakete installieren und daraus ein neues Docker-Image erstellen.

In diesem Lernprogramm wird erläutert, wie Sie eine Verknüpfung zum Hauptausführungsprozess des Containers herstellen und eine Shell zu einem ausgeführten Container erstellen.

An einen Container anhängen

Obwohl es möglich ist, mehrere Prozesse in einem Container auszuführen, wird in den meisten Docker-Containern nur ein einziger Prozess ausgeführt. Der Befehl, der beim Starten eines Containers ausgeführt wird, wird mit der ENTRYPOINT und / oder RUN .

Mit dem docker attach Befehl " docker attach können Sie Ihr Terminal an den ausgeführten Container anhängen. Dies ist nützlich, wenn Sie in Echtzeit sehen möchten, was in der Standardausgabe geschrieben ist, oder den Prozess interaktiv steuern möchten.

Um besser zu verstehen, wie der Befehl attach funktioniert, lassen Sie uns einen neuen getrennten Nginx-Container mit dem offiziellen Nginx-Image ausführen.

docker container run --name my_nginx -d -p 8080:80 nginx

Die Option -p 8080:80 weist Docker an, Port 8080 des Containers an Port 80 auf dem Hostcomputer zu binden.

Listen Sie die Container auf, um sicherzustellen, dass der Container "my_nginx" ausgeführt wird:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

Mit der ID oder dem Namen des Containers an den Container anhängen:

docker container attach my_nginx

Der Standardbefehl des Nginx-Image, der ausgeführt wird, wenn Sie den Container ausführen, ist auf CMD . Wenn Sie den Befehl attach ausführen, stellt Ihr Terminal eine Verbindung zum nginx Prozess her.

Öffnen Sie 127.0.0.1:8080 in Ihrem Browser und Sie können die Ausgabe des Nginx-Prozesses in Echtzeit verfolgen.

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

Um Zugriff auf die Containerprotokolle zu erhalten, sollten Sie den Befehl docker logs .

Verwenden Sie die Tastenkombination CTRL-p CTRL-q um sich vom Container zu lösen, ohne ihn anzuhalten. Durch Drücken von CTRL-c der Container CTRL-c .

Wenn die laufenden Prozesse, an die Sie anhängen, Eingaben akzeptieren, können Sie Anweisungen an sie senden.

Holen Sie sich eine Shell in einen Container

Mit dem Befehl docker exec können Sie Befehle in einem laufenden Container ausführen.

Um zu sehen, wie der Befehl exec funktioniert und wie er zum Eingeben der Container-Shell verwendet werden kann, müssen Sie zunächst einen neuen Container starten. Wir werden das offizielle MySQL-Image verwenden:

docker container run --name my_mysql -d mysql

Dadurch wird ein Container mit dem Namen "my_mysql" erstellt.

Führen Sie den folgenden Befehl aus, um einen Befehl im Container auszuführen:

docker container exec -it my_mysql ls /var

Die Option -i steht für interaktiv und -t weist Docker an, ein Pseudo-TTY-Gerät zuzuweisen. Der Befehl ls listet alle Dateien und Verzeichnisse im Verzeichnis /var Containers auf:

backups cache lib local lock log mail opt run spool tmp

Um eine Shell in den Container zu bekommen, dh in den Container einzutreten, starten Sie eine neue Shell-Sitzung, indem Sie die Shell-Binärdatei ausführen. Sie können sh , bash oder jede andere im Bild enthaltene Shell verwenden.

Mit dem folgenden Befehl wird eine neue Bash-Sitzung im Container erstellt:

docker container exec -it my_mysql /bin/bash

Ihre Eingabeaufforderung ändert sich und zeigt an, dass Sie jetzt an der Container-Shell arbeiten.

Von hier aus können Sie Befehle wie auf jedem anderen Linux-Server ausführen. Um zum Beispiel eine Liste der aktuellen Umgebungsvariablen zu erhalten, geben Sie env :

env

Die Ausgabe sieht ungefähr so ​​aus:

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

Fazit

Mit den Befehlen docker exec und docker attach können Sie eine Verbindung zu einem laufenden Container herstellen. Verwenden Sie den Befehl exec um eine interaktive Shell für einen Container zu exec und eine neue Shell-Sitzung zu starten. Der Befehl attach hängt Ihr Terminal an einen laufenden Container an.

Docker