Noriu įjungti ssh arba bash į veikiantį "Docker" konteinerį. Žr. pavyzdį:
$ sudo docker run -d webserver
webserver is clean image from ubuntu:14.04
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
665b4a1e17b6 webserver:latest /bin/bash ... ... 22/tcp, 80/tcp loving_heisenberg
dabar noriu gauti kažką panašaus (įeiti į veikiantį konteinerį):
$ sudo docker run -t -i webserver (or maybe 665b4a1e17b6 instead)
$ root@665b4a1e17b6:/#
However when I run the line above I get new CONTAINER ID
$ root@42f1e37bd0e5:/#
Naudojau "Vagrant" ir norėčiau gauti panašų elgesį kaip vagrant ssh
.
Atsakymas - "Docker's" komanda ``attach```. Taigi mano pateiktame pavyzdyje sprendimas bus toks:
$ sudo docker attach 665b4a1e17b6 #by ID
or
$ sudo docker attach loving_heisenberg #by Name
$ root@665b4a1e17b6:/#
"Docker" versijai 1.3 ar vėlesnei: Dėkojame naudotojui WiR3D, kuris pasiūlė kitą konteinerio apvalkalo gavimo būdą. Jei naudosime attach
, galėsime naudoti tik vieną apvalkalo egzempliorių. Taigi, jei norime atidaryti naują terminalą su nauju konteinerio apvalkalo egzemplioriumi, tereikia paleisti toliau nurodytą komandą:
$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID
arba
$ sudo docker exec -i -t loving_heisenberg /bin/bash #by Name
$ root@665b4a1e17b6:/#
Nuo "Docker 1.3" ir vėlesnių versijų:
docker exec -it <containerIdOrName> bash
Iš esmės, jei "Docker" konteineris buvo paleistas naudojant /bin/bash
komandą, galite jį pasiekti naudodami attach
. Jei ne, tuomet reikia įvykdyti "Bash" egzemplioriaus sukūrimo konteinerio viduje komandą naudojant exec
.
Taip pat, kad išeitumėte iš "Bash", nepalikdami "Bash" veikti nesąžiningame procese:
exit
Taip, tai labai paprasta.