Cómo ssh en instancia docker-machine VirtualBox?


Docker-versión de máquina 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 ssh en la máquina en sí y no encuentro instrucciones sobre cómo hacer esto. Puedo conectarme al puerto ssh:

ssh $(docker-machine ip dev)

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

Author: Matthias Braun, 2015-05-19

6 answers

Puede iniciar sesión en los hosts de docker-machine simplemente ejecutando

docker-machine ssh default

(Usando el host "predeterminado" aquí)

Los archivos de identidad deben almacenarse en ~/.docker/machine/machines. Si desea iniciar sesión en un contenedor (en lugar del host), utilice docker exec como sugiere user2915097.

 105
Author: Adrian Mouat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-23 09:46:00

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 tcuser pero también puede usar el archivo de identidad, consulte otra respuesta

 59
Author: timaschew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-26 16:33:39

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 mi configuración de Putty/MobaXterm para que coincida, voila, puedo SSH en el contenedor.

 23
Author: Jeffrey Hohenstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-12 23:51:02

Para los hackers por ahí, aquí hay un script que ssh en la 'activa' docker-machine. Esto también le da los valores para ssh_key, ssh_port y ssh_user, lo que hace posible hacer cosas como rsync entre 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 copiar y pegar eso en su terminal, línea por línea, y funcionará. O bien, convierte el script en una función y dale el nombre como argumento.

 7
Author: robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-16 06:04:42

Si por alguna razón prefieres usar el comando ssh en lugar de docker-machine ssh, puedes hacer

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
 4
Author: Emmanuel Joubaud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-05 17:22:48

Para mac OX, la máquina y sus llaves se encuentran aquí (asegúrese de tener las llaves 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) enumere las máquinas virtuales 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 predeterminado. Por lo tanto, solo

~/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, soy capaz de 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

 2
Author: zee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-21 02:02:03