Как ssh в экземпляр Docker-machine VirtualBox?


docker-версия машины 0.2.0 докер версии 1.6.2

Я использую docker-машина для создания машины с помощью VirtualBox. Все работает нормально, но я хотел бы ssh в самой машине, и я не нахожу никаких инструкций о том, как это сделать. Я могу подключиться к порту ssh:

ssh $(docker-machine ip dev)

но я понятия не имею, какое имя пользователя / пароль / идентификационный файл использовать.

6 68

6 ответов:

вы можете войти в Docker-machine hosts, просто запустив

docker-machine ssh default

(используя хост "по умолчанию" здесь)

идентификационные файлы должны храниться под ~/.docker/machine/machines. Если вы хотите войти в контейнер (в отличие от хозяина), используйте docker exec как предложено user2915097.

если вам действительно нужно сделать это через ssh, это работает с докер 1.8.2

настройки инициализации:

eval "$(docker-machine env default)"

получить IP-адрес от вашего компьютера docker по умолчанию:

docker-machine ip default

это выводит что-то вроде этого: 192.168.99.100

ssh docker@192.168.99.100

пароль tcuser но вы также можете использовать файл идентификации, см. другой ответ

наконец, я нашел ответ :

Я нахожусь в Windows с Docker Toolbox (Docker Machine).

Если Я docker-machine -D ssh default, Я считаю, что параметры SSH должны быть:

хост: localhost
Порт : 51701
Пользователь: docker
Ключевой. : docker\machine\machines\default\id_rsa

когда я изменяю свои настройки Putty / MobaXterm, чтобы соответствовать, вуаля, я могу SSH в контейнер.

для хакеров там, вот скрипт, который будет 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 $docker_ssh_user@localhost

вы можете скопировать и вставить это в свой терминал, строка за строкой, и он будет работать. Или превратите скрипт в функцию и передайте ему имя в качестве аргумента.

Если по какой-то причине вы предпочитаете использовать , а не docker-machine ssh, вы можете сделать

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa

для 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) список доступных виртуальных машин.

> ~/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
docker@default:~$ vi 
.ash_history  .ashrc        .docker/      .local/       .profile      .ssh/         log.log
docker@default:~$ ls
log.log

как вы можете видеть, я могу ssh в docker-machine / instance.

docker@default:~$ uname -a
Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux

вы также можете следовать этому > howto-docker