¿Cómo hacer SSH en la instancia de VirtualBox de la máquina acoplable?

82

docker-machine versión 0.2.0 docker versión 1.6.2

Estoy usando docker-machine para crear una máquina usando VirtualBox . Todo funciona bien, pero me gustaría ingresar a la máquina en sí y no encuentro instrucciones sobre cómo hacerlo. Puedo conectarme al puerto ssh:

ssh $(docker-machine ip dev)

Pero no tengo idea de qué archivo de nombre de usuario / contraseña / identidad usar.

Roy Truelove
fuente
4
Si escribe un comentario y explica qué está mal en esta pregunta y permite que el autor de la pregunta la enmiende.
Roy Truelove
la forma recomendada de Docker para conectarse dentro de un contenedor es docker exec -it my_container /bin/bashver el documento docs.docker.com/reference/commandline/cli/#exec
user2915097
@ user2915097 La pregunta era ssh en la máquina en sí, no en un contenedor acoplable
Roy Truelove
1
Muchas preguntas de Docker son rechazadas si no tienen contenido de programación. Podría decirse que esta pregunta debería estar en SF, pero en realidad es una decisión de criterio.
Adrian Mouat

Respuestas:

121

Puede iniciar sesión en los hosts de la máquina docker simplemente ejecutando

docker-machine ssh default

(Usando el host "predeterminado" aquí)

Los archivos de identidad deben almacenarse bajo ~/.docker/machine/machines. Si desea iniciar sesión en un contenedor (a diferencia del host), utilice docker execcomo lo sugiere el usuario 2915097.

Adrian Mouat
fuente
Entonces, tengo otra PC (diferente de la que se usó para configurar el host remoto) y quiero poder acceder a ella a través de la máquina acoplable en esta PC (al igual que estoy haciendo con la que se usa para aprovisionar). ¿Cómo lo hago?
Mahori
71

si realmente necesita hacerlo a través de ssh, esto funciona con Docker 1.8.2

init docker:

eval "$(docker-machine env default)"

obtenga la IP de su máquina acoplable predeterminada:

docker-machine ip default

esto imprime algo como esto: 192.168.99.100

ssh [email protected]

la contraseña es tcuserpero también puede usar el archivo de identidad, vea otra respuesta

timaschew
fuente
8
Tengo mucha curiosidad por saber cómo llegó a saber que es la contraseña tcuser. ¿Podrías revelar tu secreto, por favor? :-)
fmquaglia
2
encontrado en otro lugar, pero también puede verlo aquí: github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser
timaschew
25

Finalmente, encontré una respuesta:

Estoy en Windows con Docker Toolbox (Docker Machine).

Si yo docker-machine -D ssh default, encuentro que los parámetros SSH deberían ser:

Host: localhost
Puerto: 51701
Usuario: docker
Clave: .docker \ machine \ machines \ default \ id_rsa

Cuando cambio la configuración de Putty / MobaXterm para que coincida, listo, puedo usar SSH en el contenedor.

Jeffrey Hohenstein
fuente
Hey, gracias. Encontré su respuesta además de los resultados. Me salvó de horas de frustración. +1
f123
1
Para agregar, en mi caso, el puerto SSH fue 58361. Todos los detalles requeridos se imprimen cuando se usa el indicador -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
¿De dónde puedo conseguirlo docker-machine inspect? Imprimió la dirección no local en la Driver->IPAddressvariable
falko
12

Para los piratas informáticos, aquí hay un script que entrará en la máquina acoplable 'activa'. Esto también le brinda los valores para ssh_key, ssh_port y ssh_user, lo que hace posible hacer cosas como rsyncentre el localhost y la 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

Puede copiarlo y pegarlo en su terminal, línea por línea, y funcionará. O bien, convierta el script en una función y proporcione el nombre como argumento.

robert
fuente
5

Si por alguna razón prefiere usar el sshcomando en lugar de hacerlo docker-machine ssh, puede hacerlo

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

Para mac OX, la máquina y sus claves se encuentran aquí (asegúrese de tener las claves allí, algo como lo siguiente:

~/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) enumerar vms disponibles.

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

En mi caso, el nombre de la máquina es el predeterminado. Por lo que sólo

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

Como puede ver, puedo ssh en 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

También puede seguir este> howto - docker

zee
fuente
-1

También podemos acceder a la ventana acoplable mediante el siguiente comando:

docker exec -it / bin / sh

jitenagarwal19
fuente