docker attachDocker konteynerinize bağlanmanıza izin verir, ancak bu gerçekten aynı şey değildir ssh. Konteynırınız bir web sunucusu çalışıyorsa, örneğin, docker attachmuhtemelen size bağlayacak Stdout'a web sunucusu işleminin. Mutlaka size bir kabuk vermeyecektir.
docker execKomut Aradığınız muhtemelen ne; bu, varolan bir kapsayıcı içinde rasgele komutlar çalıştırmanıza izin verir. Örneğin:
docker exec -it <mycontainer> bash
Elbette, çalıştırdığınız komut ne olursa olsun, konteyner dosya sisteminde bulunmalıdır.
Yukarıdaki komutta <mycontainer>, hedef kapsayıcının adı veya kimliği bulunur. Kullanıp kullanmamanız önemli değildir docker compose; çalıştırın docker psve ya ID (ilk sütunda görüntülenen onaltılık bir dize) ya da adı (son sütunda görüntülenen) kullanın. Örneğin, verilenler:
$ docker ps
d2d4a89aaee9 larsks/mini-httpd "mini_httpd -d /cont 7 days ago Up 7 days web
Koşabilirim:
$ 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
Aynı şeyi çalıştırarak da başarabilirim:
$ docker exec -it d2d4a89aaee9 ip addr
Benzer şekilde, kapta bir kabuk başlatabilirim;
$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$