¿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.


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.


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 docker@192.168.99.100

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


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.


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

¿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.


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

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


-1

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

docker exec -it / bin / sh

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.