docker attach
Sie können eine Verbindung zu Ihrem Docker-Container herstellen, dies ist jedoch nicht das Gleiche wie ssh
. Wenn in Ihrem Container beispielsweise ein Webserver ausgeführt wird, docker attach
werden Sie wahrscheinlich mit dem Standard des Webserverprozesses verbunden. Es wird Ihnen nicht unbedingt eine Muschel geben.
Der docker exec
Befehl ist wahrscheinlich das, wonach Sie suchen. Auf diese Weise können Sie beliebige Befehle in einem vorhandenen Container ausführen. Zum Beispiel:
docker exec -it <mycontainer> bash
Natürlich muss jeder Befehl, den Sie ausführen, im Container-Dateisystem vorhanden sein.
Im obigen Befehl <mycontainer>
steht der Name oder die ID des Zielcontainers. Es spielt keine Rolle, ob Sie verwenden oder nicht docker compose
; Führen Sie einfach aus docker ps
und verwenden Sie entweder die ID (eine hexadezimale Zeichenfolge, die in der ersten Spalte angezeigt wird) oder den Namen (angezeigt in der letzten Spalte). ZB gegeben:
$ docker ps
d2d4a89aaee9 larsks/mini-httpd "mini_httpd -d /cont 7 days ago Up 7 days web
Ich kann rennen:
$ docker exec -it web ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
18: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:3/64 scope link
valid_lft forever preferred_lft forever
Ich könnte das Gleiche erreichen, indem ich renne:
$ docker exec -it d2d4a89aaee9 ip addr
Ebenso könnte ich eine Shell im Container starten;
$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$