2015-05-19 32 views
59

碼頭機版本0.2.0 碼頭版本1.6.2如何SSH入碼頭機VirtualBox實例?

我正在使用docker-machine to create a machine using VirtualBox。一切正常,但我想ssh進入機器本身,我發現沒有說明如何做到這一點。我可以連接到ssh端口:

ssh $(docker-machine ip dev) 

但我不知道要使用什麼用戶名/密碼/身份文件。

+2

如果你把-1的註釋和解釋什麼是錯這個問題,讓提問者修改。 –

+0

推薦的docker在容器內連接的方式是'docker exec -it my_container/bin/bash'請參閱文檔https://docs.docker.com/reference/commandline/cli/#exec – user2915097

+0

@ user2915097問題是ssh進入機器本身不是碼頭集裝箱 –

回答

89

您可以通過只是運行

docker-machine ssh default 

(這裏使用的「默認」主機)

身份文件應該~/.docker/machine/machines下儲存,登錄到泊塢窗機主機。如果要登錄到容器(而不是主機),請按照user2915097的建議使用docker exec

21

最後,我找到了答案:

我在Windows上使用泊塢工具箱(泊塢窗機)。

如果我docker-machine -D ssh default,我發現SSH參數應該是:

主機:本地主機
端口:51701
用戶:搬運工
重點:.docker \機\機械\ DEFAULT \ id_rsa

當我更改我的Putty/MobaXterm設置以匹配時,瞧,我可以SSH進入容器。

+0

嘿,謝謝。在結果上找到你的答案。從幾個小時的挫折中拯救了我。 +1 – f123

+1

要添加,在我的情況下,SSH端口是58361.使用-D標誌時將打印所有必需的詳細信息。 '使用SSH客戶端類型:external {[-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 = none [email protected] -o IdentitiesOnly = yes -i C:\ Users \ \ .docker \ machine \ machines \ default \ id_rsa -p 58361] C:\ Program Files \ Git \ usr \ bin \ ssh.exe}' – rohitmohta

54

如果你真的需要通過ssh做到這一點,這正與碼頭工人1.8.2

初始化泊塢窗:

docker-machine ip default 

eval "$(docker-machine env default)" 

從默認泊塢窗機獲取IP

這樣打印出來的東西如下:192.168.99.100

ssh [email protected] 

密碼tcuser,但你也可以使用身份文件,看其他答案

+5

我很好奇你怎麼知道密碼是'''tcuser'''。你能透露你的祕密嗎? :-) – fmquaglia

+2

找到其他地方,但你可以在這裏看到它:https://github.com/docker/machine/search?utf8=%E2%9C%93&q=tcuser – timaschew

+2

這裏是一個關於該主題的問題:https ://github.com/docker/machine/issues/1615 – timaschew

3

如果由於某種原因,你寧願使用ssh命令,而不是docker-machine ssh,你可以做

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

對於在那裏的黑客,這裏是一個腳本,將ssh進入'活躍'碼頭機。這也爲您提供了ssh_key,ssh_port和ssh_user的值,從而可以在本地主機和VM之間執行諸如rsync之類的操作。

#!/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] 

您可以複製並粘貼到您的終端,線路線,它會工作。或者,將腳本變爲一個函數,並將其作爲參數提供給它。

2

對於Mac OX,機器和它的按鍵都設在這裏(確保你有鑰匙在那裏,像下面:

~/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)列表中可用的虛擬機。

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

在我的情況下,機器的名稱是默認的。所以,只是

~/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 
docke[email protected]:~$ vi 
.ash_history .ashrc  .docker/  .local/  .profile  .ssh/   log.log 
[email protected]:~$ ls 
log.log 

正如你所看到的,我能夠SSH入碼頭機器/實例。

您也可以按照此>howto - docker