docker attach
akan memungkinkan Anda terhubung ke wadah Docker Anda, tetapi ini tidak benar-benar sama dengan ssh
. Jika wadah Anda menjalankan server web, misalnya, docker attach
mungkin akan menghubungkan Anda ke stdout dari proses server web. Itu tidak akan selalu memberi Anda shell.
The docker exec
perintah mungkin apa yang Anda cari; ini akan memungkinkan Anda menjalankan perintah sewenang-wenang di dalam wadah yang ada. Sebagai contoh:
docker exec -it <mycontainer> bash
Tentu saja, perintah apa pun yang Anda jalankan harus ada di sistem file wadah.
Dalam perintah di atas <mycontainer>
adalah nama atau ID wadah target. Tidak masalah apakah Anda menggunakan atau tidak docker compose
; jalankan docker ps
dan gunakan ID (string heksadesimal yang ditampilkan di kolom pertama) atau nama (ditampilkan di kolom terakhir). Misalnya, diberikan:
$ docker ps
d2d4a89aaee9 larsks/mini-httpd "mini_httpd -d /cont 7 days ago Up 7 days web
Saya bisa berlari:
$ 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
Saya bisa mencapai hal yang sama dengan menjalankan:
$ docker exec -it d2d4a89aaee9 ip addr
Demikian pula, saya dapat memulai sebuah shell di wadah;
$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$