Jak włączyć ssh do instancji VirtualBox docker-machine?

83

docker-machine w wersji 0.2.0 docker w wersji 1.6.2

Używam docker-machine do tworzenia maszyny przy użyciu VirtualBox . Wszystko działa dobrze, ale chciałbym ssh do samej maszyny i nie znajduję instrukcji, jak to zrobić. Mogę podłączyć się do portu ssh:

ssh $(docker-machine ip dev)

Ale nie mam pojęcia, jakiej nazwy użytkownika / hasła / pliku tożsamości użyć.

Roy Truelove
źródło
4
Jeśli -1 umieść komentarz i wyjaśnij, co jest nie tak w tym pytaniu, i pozwól pytającemu na poprawienie.
Roy Truelove
zalecany sposób łączenia się w kontenerze docker exec -it my_container /bin/bashprzez docker to
user2915097
@ user2915097 Pytanie dotyczyło ssh do samego komputera, a nie kontenera dockera
Roy Truelove
1
Wiele pytań dotyczących Dockera jest odrzucanych, jeśli nie zawierają treści programistycznych. Prawdopodobnie to pytanie powinno dotyczyć SF, ale tak naprawdę jest to ocena.
Adrian Mouat

Odpowiedzi:

121

Możesz zalogować się do hostów docker-machine, po prostu uruchamiając

docker-machine ssh default

(Używam tutaj „domyślnego” hosta)

Pliki tożsamości powinny być przechowywane pod ~/.docker/machine/machines. Jeśli chcesz zalogować się do kontenera (w przeciwieństwie do hosta), użyj docker execzgodnie z sugestią użytkownika2915097.

Adrian Mouat
źródło
Mam więc inny komputer (inny niż ten używany do konfiguracji zdalnego hosta) i chcę mieć do niego dostęp za pośrednictwem docker-machine na tym komputerze (tak jak robię to z tego używanego do obsługi administracyjnej). Jak mam się do tego zabrać?
Mahori
71

jeśli naprawdę musisz to zrobić przez ssh, to działa z dockerem 1.8.2

init docker:

eval "$(docker-machine env default)"

pobierz adres IP z domyślnej maszyny dokującej:

docker-machine ip default

wypisuje coś takiego: 192.168.99.100

ssh [email protected]

hasło jest, tcuserale możesz również użyć pliku tożsamości, zobacz inną odpowiedź

timaschew
źródło
8
Jestem bardzo ciekawy, jak dowiedziałeś się, że to hasło tcuser. Czy mógłbyś ujawnić swój sekret? :-)
fmquaglia
2
znalezione gdzie indziej, ale możesz to zobaczyć także tutaj: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew
25

Wreszcie znalazłem odpowiedź:

Pracuję w systemie Windows z zestawem Docker Toolbox (Docker Machine).

Jeśli uważam docker-machine -D ssh default, że parametry SSH powinny być:

Host: localhost
Port: 51701
Użytkownik : docker
Klucz: .docker \ machine \ machines \ default \ id_rsa

Kiedy zmieniam ustawienia Putty / MobaXterm, aby pasowały, voila, mogę wysłać SSH do kontenera.

Jeffrey Hohenstein
źródło
Hej, dziekuje. Znalazłem odpowiedź na górze wyników. Uratował mnie od wielu godzin frustracji. +1
f123
1
Aby dodać, w moim przypadku port SSH to 58361. Wszystkie wymagane szczegóły są drukowane przy użyciu flagi -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 [email protected] -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
rohitmohta
Skąd mogę to wziąć docker-machine inspect? Driver->IPAddress
Wypisał
12

Dla hakerów mamy skrypt, który włączy ssh do „aktywnej” maszyny dokującej. Daje to również wartości dla ssh_key, ssh_port i ssh_user, umożliwiając wykonywanie takich czynności, jak rsyncmiędzy hostem lokalnym a maszyną wirtualną.

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

Możesz skopiować i wkleić to do swojego terminala, linia po linii i zadziała. Lub przekształć skrypt w funkcję i podaj mu nazwę jako argument.

robert
źródło
5

Jeśli z jakiegoś powodu wolisz użyć sshpolecenia, a nie docker-machine ssh, możesz to zrobić

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
ejoubaud
źródło
2

W przypadku Mac OX maszyna i jej klucze znajdują się tutaj (upewnij się, że masz tam klucze, coś takiego jak poniżej:

~/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) lista dostępnych maszyn wirtualnych.

> ~/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

W moim przypadku nazwa maszyny jest domyślna. Więc tylko

~/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

Jak widać, jestem w stanie włączyć ssh do 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

Możesz również wykonać to> howto - docker

z atef
źródło
-1

Możemy również ssh do dockera za pomocą następującego polecenia -

docker exec -it / bin / sh

jitenagarwal19
źródło