Как я могу использовать SSH в хосте boot2docker vm, установленном поставщиком Daker Vagrant 1.6?
Я на OSX, и я хотел бы иметь SSH в хосте vm, чтобы:
- Получить доступ к родной среде докеров. Это облегчает понимание и отладки проблем переадресации портов.
- Vagrant rsync, похоже, оставляет много неиспользуемых синхронизированных каталогов, которые вырывают дисковое пространство, которое я бы хотел восстановить.
Чтобы быть ясным, этот вопрос НЕ о ssh: в контейнерах докеров, которые создает поставщик Vagrant, но в промежуточном хосте v2, который создает Vagrant.
Я знаю, что обходной путь заключается в том, чтобы не использовать по умолчанию boot2docker как хост vm (как объясняется в ответе здесь), но это не тот вопрос, о котором идет речь.
Ответы
Ответ 1
Vagrant boot2docker хранит имя пользователя и пароль boot2docker ssh.
SSH в VM
$ boot2docker ssh
Boot2Docker автоматически регистрируется с использованием сгенерированного ключа SSH, но если вы хотите, чтобы SSH машина вручную (или вы не используете управляемую виртуальную машину boot2docker
), учетными данными являются:
user: docker
pass: tcuser
https://github.com/boot2docker/boot2docker#ssh-into-vm
Порт перенаправляется из локального порта 2022
по умолчанию. Вы можете проверить это:
$ VBoxManage list vms | grep docker
"docker-host_default_1234567890000_1234" {3d66ecf6-4539-47ca-afd2-66f953cd9a3e}
$ VBoxManage showvminfo docker-host_default_1234567890000_1234 | grep ssh
NIC 1 Rule(1): name = ssh, protocol = tcp, host ip = 127.0.0.1, host port = 2022, guest ip = , guest port = 22
И затем войдите в систему:
$ ssh [email protected] -p 2022
[email protected] password: tcuser
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
[email protected]:~$
Ответ 2
Октябрь 2015: Boot2docker устарел в пользу докер-машины. Для входа:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
$ docker-machine ssh default
Ответ 3
Вы можете использовать ssh в хосте docker с vagrant ssh docker-host-id
, но сначала вам нужно знать идентификатор docker-host.
Вы можете получить список всех активных бродячих сред с помощью команды vagrant global-status
.
Чтобы получить идентификатор docker-host, вы можете фильтровать grep:
vagrant global-status | grep docker-host
вы получите результат, похожий на:
68f58d0 default virtualbox running /Users/yourUser/.vagrant.d/data/docker-host
скопируйте первый идентификатор столбца, а затем ssh в docker-host:
vagrant ssh 68f58d0
бранные глобальные документы о статусе
Ответ 4
Вы также можете отказаться от использования функции boot2docker
ssh
и сделать это "вручную" следующим образом:
$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
[email protected]
Аргументы -p
обычно представляют собой порт 2022, но выше показывает, как вы можете программно определить это, если хотите.
Ответ 5
Вы можете использовать SSH напрямую:
ssh [email protected]$(boot2docker ip)
(пароль: tcuser, см. https://github.com/boot2docker/boot2docker#ssh-into-vm)
И вы также можете скопировать/вставить свой открытый ключ на машину boot2docker, поэтому вам не нужно вводить пароль каждый раз:
cat ~/.ssh/id_rsa.pub | ssh [email protected]$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
Ответ 6
Для бранных хост-машин с бродячим паролем:
ssh -p 2222 [email protected]
В противном случае с паролем tcuser:
ssh -p 2222 [email protected]
Здесь больше информации о том, почему это работает.