如何SSH到docker-machine VirtualBox实例?


82

docker-machine版本0.2.0 docker版本1.6.2

我正在使用docker-machine使用VirtualBox创建计算机。一切正常,但我想使用ssh进入机器本身,但没有找到执行此操作的说明。我可以连接到ssh端口:

ssh $(docker-machine ip dev)

但是我不知道要使用什么用户名/密码/身份文件。


4
如果您-1提出评论并解释此问题出了什么问题,并允许请求者修改。
Roy Truelove

建议在容器内进行连接docker exec -it my_container /bin/bashDocker方法
user2915097 2015年

@ user2915097问题是将SSH本身而不是docker容器放入机器中
Roy Truelove

1
如果没有编程内容,许多Docker问题将被否决。可以说,这个问题应该在SF上,但这确实是一个判断电话。
阿德里安·穆阿特

Answers:


121

您只需运行即可登录docker-machine主机

docker-machine ssh default

(在此处使用“默认”主机)

身份文件应存储在下~/.docker/machine/machines。如果要登录到容器(而不是主机),请docker exec按照user2915097的建议使用。


因此,我有一台PC(与用于设置远程主机的PC不同),我希望能够通过此PC上的docker-machine访问它(就像我从用于配置的PC一样)。我该怎么办?
Mahori

71

如果您确实需要通过这样做,则可以ssh使用docker 1.8.2

初始化docker:

eval "$(docker-machine env default)"

从默认的docker机器获取IP:

docker-machine ip default

这打印出这样的东西: 192.168.99.100

ssh docker@192.168.99.100

密码是,tcuser但您也可以使用身份文件,请参阅其他答案


8
我对您如何知道密码为很好奇tcuser。请您透露您的秘密吗?:-)
fmquaglia

2
在其他地方找到,但您也可以在这里看到它:github.com/docker/machine/search?
utf8=%E2%9C%93&q

25

最后,我找到了答案:

我在Windows上使用Docker Toolbox(Docker机器)。

如果我docker-machine -D ssh default发现SSH参数应该为:

主机:本地主机
端口:51701
用户:泊坞窗
密钥:.docker \ machine \ machines \ default \ id_rsa

当我更改Putty / MobaXterm设置以匹配时,我可以通过SSH进入容器。


嘿,谢谢。在结果之上找到了答案。使我免于数小时的沮丧。+1
f123

1
要添加,在我的情况下,SSH端口为58361。使用-D标志时,将打印所有必需的详细信息。 Using SSH client type: 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 docker@127.0.0.1 -o IdentitiesOnly=yes -i C:\Users\<user>\.docker\machine\machines\default\id_rsa -p 58361] C:\Program Files\Git\usr\bin\ssh.exe}
rohitmohta

我从哪里可以得到它docker-machine inspect?它在Driver->IPAddress变量中打印了非本地地址
falko '19

12

对于那里的黑客来说,这是一个脚本,它将通过ssh进入“活动”的docker-machine。这也为您提供了ssh_key,ssh_port和ssh_user的值,从而可以rsync在本地主机和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

您可以将其复制并粘贴到终端中,一行一行地行,它将起作用。或者,使脚本成为函数,然后将其名称作为参数输入。


5

如果出于某种原因,您宁愿使用ssh命令而不是docker-machine ssh,则可以执行

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

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
docker@default:~$ vi 
.ash_history  .ashrc        .docker/      .local/       .profile      .ssh/         log.log
docker@default:~$ ls
log.log

如您所见,我能够通过SSH进入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

您还可以按照此>操作方法-docker


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.