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