2015-05-19 22 views
59

finestra mobile versione 0.2.0 versione docker 1.6.2Come ssh nell'istanza VirtualBox della macchina docker?

Sto usando docker-machine to create a machine using VirtualBox. Tutto funziona bene, ma mi piacerebbe ssh nella macchina stessa e non trovo istruzioni su come farlo. Posso collegarmi alla porta ssh:

ssh $(docker-machine ip dev) 

Ma non ho idea di quale nome utente/password/file di identità utilizzare.

+2

Se -1 mette un commento e spiegare che cosa è sbagliato con questa domanda e consentire il richiedente di modifica. –

+0

la modalità docker consigliata per collegarsi in un contenitore è 'docker exec -it my_container/bin/bash' vedere il documento https://docs.docker.com/reference/commandline/cli/#exec – user2915097

+0

@ user2915097 La domanda era di ssh nella macchina stessa non in un contenitore docker –

risposta

89

È possibile accedere al host finestra mobile-macchina da solo in esecuzione

docker-machine ssh default 

(Usando l'host "default" qui)

I file di identità devono essere conservati sotto ~/.docker/machine/machines. Se si desidera accedere a un contenitore (diversamente dall'host), utilizzare docker exec come suggerito dall'utente2915097.

21

Infine, ho trovato una risposta:

Sono su Windows con Docker Toolbox (Docker Machine).

Se io docker-machine -D ssh default, trovo che i parametri SSH dovrebbero essere:

Host: localhost
Porto: 51701
utente: finestra mobile
Chiave: .docker \ macchina \ macchine \ default \ id_rsa

Quando cambio le impostazioni di Putty/MobaXterm in modo che corrispondano, voilà, posso inserire SSH nel contenitore.

+0

Ehi, grazie. Hai trovato la tua risposta in cima ai risultati. Mi ha salvato da ore di frustrazione. +1 – f123

+1

Per aggiungere, nel mio caso la porta SSH era 58361. Tutti i dettagli richiesti vengono stampati quando si usa -D flag. 'Usando il tipo di client SSH: esterno {[-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 = nessuno [email protected] -o IdentitiesOnly = yes -i C: \ Users \ \ .docker \ machine \ machines \ default \ id_rsa -p 58361] C: \ Programmi \ Git \ usr \ bin \ ssh.exe} ' – rohitmohta

54

se si ha realmente bisogno di farlo tramite ssh, questo sta lavorando con finestra mobile 1.8.2

init finestra mobile:

eval "$(docker-machine env default)" 

ottenere l'IP dalla propria macchina finestra mobile di default:

docker-machine ip default 

stampa qualcosa di simile: 192.168.99.100

ssh [email protected] 

password è tcuser ma è anche possibile utilizzare il file di identità, vedi altra risposta

+5

Sono molto curioso di sapere come la password sia' '' tcuser'''. Vuoi rivelare il tuo segreto, per favore? :-) – fmquaglia

+2

trovato da qualche altra parte, ma puoi vederlo anche qui: https://github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser – timaschew

+2

qui c'è un problema sull'argomento: https : //github.com/docker/machine/issues/1615 – timaschew

3

Se per qualche motivo si preferisce utilizzare il comando ssh piuttosto che docker-machine ssh, si può fare

ssh `docker-machine ip machine_name` -ldocker -i ~/.docker/machine/machines/machine_name/id_rsa 
6

Per gli hacker là fuori, ecco una sceneggiatura che ssh nella macchina mobile 'attiva'. Questo fornisce anche i valori per ssh_key, ssh_port e ssh_user, rendendo possibile fare cose come rsync tra localhost e 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 [email protected] 

È possibile copiarlo e incollarlo nel terminale, linea per linea e funzionerà. Oppure, trasforma lo script in una funzione e inseriscilo come argomento.

2

per Mac OX, la macchina e le sue chiavi si trovano qui (assicuratevi di avere le chiavi in ​​là, qualcosa come le seguenti:

~/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) Lista VM disponibili.

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

Nel mio caso, il nome della macchina è predefinito. Quindi, 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 
[email protected]:~$ vi 
.ash_history .ashrc  .docker/  .local/  .profile  .ssh/   log.log 
[email protected]:~$ ls 
log.log 

Come potete vedere, sono in grado di ssh in docker/istanza macchina.

Potete anche seguire questa>howto - docker

Problemi correlati