Как сделать ssh в экземпляре виртуальной машины докер-машины?
версия докерной машины 0.2.0
докер версия 1.6.2
Я использую докер-машину для создания машины с использованием VirtualBox. Все работает нормально, но я бы хотел, чтобы ssh попал в машину, и я не нахожу инструкций о том, как это сделать. Я могу подключиться к порту ssh:
ssh $(docker-machine ip dev)
Но я не знаю, что использовать имя пользователя/пароль/файл идентификации.
Ответы
Ответ 1
Вы можете войти в хосты докеров, просто запустив
docker-machine ssh default
(здесь используется хост по умолчанию)
Файлы идентификаторов должны храниться в ~/.docker/machine/machines
. Если вы хотите войти в контейнер (в отличие от хоста), используйте docker exec
, как предложено пользователем2915097.
Ответ 2
если вам действительно нужно сделать это через ssh
, это работает с docker 1.8.2
init docker:
eval "$(docker-machine env default)"
получить IP-адрес от вашей док-станции по умолчанию:
docker-machine ip default
это напечатает что-то вроде этого: 192.168.99.100
ssh [email protected]
пароль tcuser
, но вы также можете использовать файл идентификации, см. другой ответ
Ответ 3
Наконец, я нашел ответ:
Я нахожусь в Windows с Docker Toolbox (Docker Machine).
Если я docker-machine -D ssh default
, я обнаружил, что параметры SSH должны быть:
Host: localhost
Порт: 51701
Пользователь: docker
Ключ:.docker\machine\machines\default\id_rsa
Когда я изменяю настройки Putty/MobaXterm для соответствия, вуаля, я могу использовать SSH в контейнере.
Ответ 4
Для хакеров здесь есть script, который будет ssh в "активную" докер-машину. Это также дает вам значения для ssh_key, ssh_port и ssh_user, что позволяет делать такие вещи, как rsync
между локальным хостом и виртуальной машиной.
#!/bin/bash
docker_machine_name=$(docker-machine active)
docker_ssh_user=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHUser}})
docker_ssh_key=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHKeyPath}})
docker_ssh_port=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHPort}})
ssh -i $docker_ssh_key -p $docker_ssh_port [email protected]
Вы можете скопировать и вставить это в свой терминал, линию для линии, и он будет работать. Или сделайте script в функцию и передайте это имя в качестве аргумента.
Ответ 5
Если по какой-то причине вы предпочитаете использовать команду ssh
, а не docker-machine ssh
, вы можете сделать
ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
Ответ 6
Для mac OX машина и ее ключи расположены здесь (убедитесь, что у вас есть клавиши там, что-то вроде ниже:
~/project/dev/docker_notes za$ ls /Users/za/.docker/machine/machines/default/
.DS_Store ca.pem config.json disk.vmdk id_rsa.pub server-key.pem
boot2docker.iso cert.pem default/ id_rsa key.pem server.pem
1) список доступных vms.
> ~/project/dev/docker_notes za$ docker-machine ls
> NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
> default - virtualbox Running tcp://192.168.99.100:2376 v1.11.0
В моем случае имя машины по умолчанию. Итак, просто
~/project/dev/docker_notes za$ docker-machine ssh default
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.0, build HEAD : 32ee7e9 - Wed Apr 13 20:06:49 UTC 2016
Docker version 1.11.0, build 4dc5990
[email protected]:~$ vi
.ash_history .ashrc .docker/ .local/ .profile .ssh/ log.log
[email protected]:~$ ls
log.log
Как вы можете видеть, я могу использовать ssh в docker-machine/instance.
[email protected]:~$ uname -a
Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux
Вы также можете следовать этому > howto - docker