web-dev-qa-db-fra.com

Comment puis-je SSH dans le VM hôte Boot2docker que le fournisseur Docker Vagrant 1.6 configure?

Je suis sur OSX et j'aimerais pouvoir SSH dans l'hôte vm afin de:

  1. Accédez à un environnement de docker natif. Cela facilite la compréhension et le débogage des problèmes de redirection de port.
  2. Vagrant rsync semble laisser beaucoup de répertoires synchronisés inutilisés qui consomment de l'espace disque que j'aimerais récupérer.

Pour être clair, cette question ne concerne PAS ssh: ing dans les conteneurs Docker créés par le fournisseur Vagrant, mais dans le serveur intermédiaire boot2docker Host VM créé par Vagrant.

Je sais qu'une solution de contournement consiste à ne pas utiliser le boot2docker par défaut en tant que VM hôte (comme expliqué dans la réponse ici ), mais ce n'est pas le sujet de cette question.

35
Motin

Le boot2docker de Vagrant conserve le nom d'utilisateur et le mot de passe ssh de boot2docker.

SSH dans VM

$ boot2docker ssh

Boot2Docker se connecte automatiquement à l'aide de la clé SSH générée, mais si vous souhaitez vous connecter manuellement à la machine (ou si vous n'utilisez pas un boot2docker VM gérée), les informations d'identification sont les suivantes:

user: docker
pass: tcuser

https://github.com/boot2docker/boot2docker#ssh-into-vm

Le port est transféré à partir du port local 2022 par défaut. Vous pouvez le vérifier:

$ VBoxManage list vms | grep docker
"docker-Host_default_1234567890000_1234" {3d66ecf6-4539-47ca-afd2-66f953cd9a3e}
$ VBoxManage showvminfo docker-Host_default_1234567890000_1234 | grep ssh
NIC 1 Rule(1):   name = ssh, protocol = tcp, Host ip = 127.0.0.1, Host port = 2022, guest ip = , guest port = 22

Et puis connectez-vous:

$ ssh docker@localhost -p 2022
docker@localhost's password: tcuser
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
docker@boot2docker:~$ 
100
David256

Oct 2015: Boot2docker est déconseillé au profit de docker-machine. Ouvrir une session:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376   

$ docker-machine ssh default
15
Jim Soho

Vous pouvez ssh dans Docker Host avec vagrant ssh docker-Host-id mais vous devez d'abord connaître le docker-Host-id.
Vous pouvez obtenir une liste de tous les environnements Vagrant actifs avec vagrant global-status commande.
Pour obtenir l'identifiant Docker-Host, vous pouvez filtrer avec grep:

vagrant global-status | grep docker-Host

vous obtiendrez une sortie similaire à:

68f58d0  default  virtualbox running   /Users/yourUser/.vagrant.d/data/docker-Host

copiez le premier identifiant de colonne, puis ssh dans docker-Host:

vagrant ssh 68f58d0

documents sur l'état global vagabonds

11
alfonsodev

Vous pouvez également renoncer à utiliser boot2docker _ ssh fonction et faites-le "manuellement" comme ceci:

$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
docker@localhost

Les arguments de -p est généralement le port 2022 mais ci-dessus montre comment vous pouvez le déterminer par programme si vous le souhaitez.

7
slm

Vous pouvez utiliser directement SSH:

ssh docker@$(boot2docker ip)

(mot de passe: tcuser, voir https://github.com/boot2docker/boot2docker#ssh-into-vm )


Et vous pouvez également copier/coller votre clé publique sur la machine boot2docker, vous n'avez donc pas besoin de taper le mot de passe à chaque fois:

cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
2
Vojtech Vitek

Pour les machines hôtes vagrant avec mot de passe vagrant :

ssh -p 2222 vagrant@localhost

Sinon avec mot de passe tcuser :

ssh -p 2222 docker@localhost

Ici est plus d'informations sur pourquoi cela fonctionne.

2
John-Paul Cunliffe