Як ssh перетворити на екземпляр докер-машини VirtualBox?


83

docker-версії версії 0.2.0 docker версії 1.6.2

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

ssh $(docker-machine ip dev)

Але я не уявляю, яке ім’я користувача / пароль / файл ідентифікатора використовувати.


4
Якщо ви -1 додаєте коментар, пояснюєте, що не так із цим запитанням, і дозволяєте запитувачеві внести зміни.
Рой Truelove

рекомендований спосіб підключення докера всередині контейнера - docker exec -it my_container /bin/bashдив. doc docs.docker.com/reference/commandline/cli/#exec
user2915097

@ user2915097 Питання полягало в тому, щоб ssh потрапити в саму машину, а не в контейнер докера
Рой Truelove

1
Багато запитань щодо Docker отримують проти, якщо вони не мають програмного змісту. Можна стверджувати, що це питання повинно бути на SF, але насправді це судове рішення.
Адріан Муат,

Відповіді:


121

Ви можете увійти в хости докер-машини, просто запустивши

docker-machine ssh default

(Використовуючи "типовий" хост тут)

Файли посвідчень слід зберігати в ~/.docker/machine/machines. Якщо ви хочете увійти в контейнер (на відміну від хоста), використовуйте, docker execяк запропоновано користувачем2915097.


Отже, у мене є інший ПК (відмінний від того, який використовується для налаштування віддаленого хоста), і я хочу мати доступ до нього через докер-машину на цьому ПК (так само, як я це роблю від того, що використовується для забезпечення). Як я можу це зробити?
Махорі,

71

якщо вам дійсно потрібно це зробити через ssh, це працює з docker 1.8.2

init docker:

eval "$(docker-machine env default)"

отримати IP із вашої докер-машини за замовчуванням:

docker-machine ip default

це друкує щось подібне: 192.168.99.100

ssh docker@192.168.99.100

пароль є, tcuserале ви також можете використовувати файл посвідчення особи, див. іншу відповідь


8
Мені дуже цікаво, як ви дізналися, що такий пароль tcuser. Будь ласка, розкрий свою таємницю? :-)
fmquaglia

2
знайдено десь ще, але ви можете побачити це також тут: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew

25

Нарешті, я знайшов відповідь:

Я працюю в Windows із Docker Toolbox (Docker Machine).

Якщо я docker-machine -D ssh default, то я вважаю, що параметри SSH повинні бути:

Хост: localhost
Порт: 51701
Користувач : docker
Ключ: .docker \ machine \ machines \ default \ id_rsa

Коли я зміню свої налаштування Putty / MobaXterm на відповідність, voila, я можу SSH в контейнер.


Гей, дякую. Знайшли свою відповідь поверх результатів. Врятував мене від годин розчарувань. +1
f123

1
Додамо, у моєму випадку SSH-порт був 58361. Всі необхідні дані друкуються при використанні прапора -D. Using SSH client type: external {[-o BatchMode=yes -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker@127.0.0.1 -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
rohitmohta

Звідки я можу це взяти docker-machine inspect? Там надруковано нелокальну адресу у Driver->IPAddressзмінній
falko

12

Для хакерів тут є сценарій, який потрапить у „активну” машину докерів. Це також надає вам значення для ssh_key, ssh_port та ssh_user, що робить можливим щось на зразок rsyncміж localhost та VM.

#!/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

Ви можете скопіювати та вставити це у свій термінал, рядок за рядком, і це буде працювати. Або перетворіть сценарій у функцію та вкажіть його ім’я як аргумент.


5

Якщо з якихось причин ви скоріше скористаєтесь sshкомандою, а не docker-machine ssh, можете це зробити

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

2

Для 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
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


-1

Ми також можемо ssh потрапити в докер за допомогою наступної команди -

докер exec -it / bin / sh

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.