Ответ 1
Есть несколько вещей, которые вы должны сделать, чтобы включить ssh'ing в контейнер, работающий в VM:
- установите и запустите
sshd
в вашем контейнере (пример).sshd
не существует по умолчанию, потому что контейнеры обычно запускают только один процесс, хотя они могут запускать сколько угодно. -
EXPOSE
порт как часть создания изображения, обычно 22, так что при запуске контейнера демон подключается к портуEXPOSE
'd внутри контейнера, и что-то может быть открыто на внешней стороне контейнер. - Когда вы запускаете контейнер, вам нужно решить, как сопоставить этот порт. Вы можете позволить Docker делать это автоматически или быть явным. Я предлагаю быть явным:
docker run -p 42222:22 ...
, который отображает порт 42222 на виртуальной машине на порт 22 в контейнере. - Добавьте портпорт для виртуальной машины, чтобы открыть порт для вашего хоста. например когда ваша виртуальная машина не запущена, вы можете добавить такое отображение следующим образом:
VBoxManage modifyvm "boot2docker-vm" --natpf1 "containerssh,tcp,,42222,,42222"
Затем с вашего хоста вы сможете передать ssh на порт 42222 на хосте, чтобы получить демон ssh контейнера.
Вот что происходит, когда я выполняю вышеуказанные шаги:
$ 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] 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
Так что показывает ssh- > localhost 42222- > порт VM 42222- > контейнерный порт 22.