web-dev-qa-db-fra.com

Comment SSH dans l'instance VirtualBox de Docker-machine?

docker-machine version 0.2.0 docker version 1.6.2

J'utilise docker-machine pour créer une machine en utilisant VirtualBox . Tout fonctionne bien, mais je voudrais entrer dans la machine elle-même et je ne trouve aucune instruction sur la façon de procéder. Je peux me connecter au port ssh:

ssh $(docker-machine ip dev)

Mais je n'ai aucune idée du nom d'utilisateur/mot de passe/fichier d'identité à utiliser.

79
Roy Truelove

Vous pouvez vous connecter aux hôtes Docker-Machine en exécutant simplement

docker-machine ssh default

(Utiliser l'hôte "par défaut" ici)

Les fichiers d'identité doivent être stockés sous ~/.docker/machine/machines. Si vous souhaitez vous connecter à un conteneur (par opposition à l'hôte), utilisez docker exec comme suggéré par l'utilisateur2915097.

116
Adrian Mouat

si vous avez vraiment besoin de le faire via ssh, cela fonctionne avec docker 1.8.2

init docker:

eval "$(docker-machine env default)"

obtenez l'adresse IP de votre machine de docker par défaut:

docker-machine ip default

ceci affiche quelque chose comme ceci: 192.168.99.100

ssh [email protected]

le mot de passe est tcuser mais vous pouvez aussi utiliser le fichier d'identité, voir autre réponse

65
timaschew

Enfin, j'ai trouvé une réponse:

Je suis sur Windows avec Docker Toolbox (Docker Machine).

Si je docker-machine -D ssh default, je trouve que les paramètres SSH doivent être:

Hôte: localhost
Port: 51701
Utilisateur: docker
Clé: .docker\machine\machines\default\id_rsa

Lorsque je modifie mes paramètres PuTTY/MobaXterm pour les faire correspondre, voilà, je peux SSH dans le conteneur.

25
Jeffrey Hohenstein

Pour les hackers, voici un script qui va ssh dans le docker-machine 'actif'. Cela vous donne également les valeurs pour ssh_key, ssh_port et ssh_user, ce qui permet de faire des choses comme rsync entre le localhost et le 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

Vous pouvez copier et coller cela dans votre terminal, ligne par ligne, et cela fonctionnera. Ou bien, transformez le script en une fonction et donnez-lui le nom sous forme d'argument.

9
robert

Si pour une raison quelconque vous préférez utiliser la commande ssh plutôt que docker-machine ssh, vous pouvez le faire.

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa
5
Emmanuel Joubaud

Pour mac OX, la machine et ses clés sont situées ici (assurez-vous que vous avez les clés, quelque chose de similaire à ce qui suit:

~/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) liste des 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

Dans mon cas, le nom de la machine est par défaut. Alors, juste

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

Comme vous pouvez le voir, je suis capable de ssh dans 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

Vous pouvez également suivre ceci> howto - docker

2
zee