Haluan päästä ssh:llä tai bashilla käynnissä olevaan telakkasäiliöön. Katso esimerkki:
$ 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
Nyt haluan saada jotain tällaista (mene käynnissä olevaan konttiin):
$ 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:/#
Käytin Vagrantia ja haluaisin saada samanlaisen käyttäytymisen kuin vagrant ssh
.
Vastaus on Dockerin attach
-komento. Yllä olevassa esimerkissäni ratkaisu on siis seuraava:
$ sudo docker attach 665b4a1e17b6 #by ID
or
$ sudo docker attach loving_heisenberg #by Name
$ root@665b4a1e17b6:/#
Docker-versiolle 1.3 tai uudemmalle: Kiitos käyttäjälle WiR3D, joka ehdotti toista tapaa saada kontti'n kuori. Jos käytämme attach
, voimme käyttää vain yhtä instanssia kuorta. Jos siis haluamme avata uuden terminaalin, jossa on uusi instanssi kontin'n komentotulkista, meidän tarvitsee vain suorittaa seuraava:
$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID
tai
$ sudo docker exec -i -t loving_heisenberg /bin/bash #by Name
$ root@665b4a1e17b6:/#
Docker 1.3:sta alkaen:
docker exec -it <containerIdOrName> bash
Periaatteessa, jos Docker-kontti käynnistettiin komennolla /bin/bash
, voit käyttää sitä komennolla attach
. Jos näin ei ole, sinun on suoritettava komento Bash-instanssin luomiseksi kontin sisälle exec
:llä.
Myös Bashista poistuminen ilman, että Bash jää pyörimään rogue-prosessiin:
exit
Jep, se on niin yksinkertaista.