Ci sono diverse cose che si deve fare per consentire ssh'ing a un contenitore in esecuzione in una VM:.
- installare ed eseguire
sshd
nel contenitore (example) sshd
non è lì per default, perché i contenitori in genere eseguite solo processo, anche se possono funzionare come molti come si desidera .
EXPOSE
una porta come parte della creazione dell'immagine, in genere 22, in modo che quando si esegue il contenitore, il daemon si connette alla porta 'EXPOSE
' all'interno del contenitore e qualcosa può essere esposto all'esterno del contenitore.
- Quando si esegue il contenitore, è necessario decidere come mappare quella porta. Puoi lasciare che Docker lo faccia automaticamente o essere esplicito. Suggerirei di essere esplicito:
docker run -p 42222:22 ...
che mappa la porta 42222 sulla VM alla porta 22 nel contenitore.
- Aggiungere una portmap alla VM per esporre la porta all'host. per esempio. quando la vostra macchina virtuale non è in esecuzione, è possibile aggiungere una mappatura come questo:
VBoxManage modifyvm "boot2docker-vm" --natpf1 "containerssh,tcp,,42222,,42222"
Poi dal vostro ospite, si dovrebbe essere in grado di ssh alla porta 42222 sull'host per raggiungere ssh daemon del contenitore.
Ecco cosa succede quando eseguo i passaggi precedenti:
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "containerssh,tcp,,42222,,42222"
$ ./boot2docker start
[2014-04-11 12:07:35] Starting boot2docker-vm...
[2014-04-11 12:07:55] Started.
$ docker run -d -p 42222:22 dhrp/sshd
Unable to find image 'dhrp/sshd' (tag: latest) locally
Pulling repository dhrp/sshd
2bbfe079a942: Download complete
c8a2228805bc: Download complete
8dbd9e392a96: Download complete
11d214c1b26a: Download complete
27cf78414709: Download complete
b750fe79269d: Download complete
cf7e766468fc: Download complete
082189640622: Download complete
fa822d12ee30: Download complete
1522e919ec9f: Download complete
fa594d99163a: Download complete
1bd442970c79: Download complete
0fda9de88c63: Download complete
86e22a5fdce6: Download complete
79d05cb13124: Download complete
ac72e4b531bc: Download complete
26e4b94e5a13b4bb924ef57548bb17ba03444ca003128092b5fbe344110f2e4c
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26e4b94e5a13 dhrp/sshd:latest /usr/sbin/sshd -D 6 seconds ago Up 3 seconds 0.0.0.0:42222->22/tcp loving_einstein
$ ssh [email protected] -p 42222
The authenticity of host '[localhost]:42222 ([127.0.0.1]:42222)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:42222' (RSA) to the list of known hosts.
[email protected]'s password: screencast
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.12.1-tinycore64 x86_64)
* Documentation: https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
[email protected]:~# exit
logout
in modo che mostra ssh-> localhost 42222-> porta VM 42222-> porto container 22.
questo è molto più semplice della risposta accettata –
Funziona anche con la finestra mobile-comporre come 'finestra mobile-comporre eseguire/bin/bash' –