如何SSH入docker机VirtualBox实例?

docker机版本0.2.0docker版本1.6.2

我使用docker-machine来创build一个使用VirtualBox的机器 。 一切工作正常,但我想ssh到机器本身,我找不到如何做到这一点的指示。 我可以连接到SSH端口:

ssh $(docker-machine ip dev) 

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

您可以通过运行login到docker机主机

 docker-machine ssh default 

(在这里使用“默认”主机)

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

如果你真的需要通过ssh来完成,那么这个是与docker 1.8.2一起工作的

init docker:

 eval "$(docker-machine env default)" 

从您的默认docker机获取IP:

 docker-machine ip default 

这打印出这样的东西: 192.168.99.100

 ssh docker@192.168.99.100 

密码是tcuser但你也可以使用标识文件,看到其他答案

最后,我find了答案:

我在Windows上使用Docker Toolbox(Docker Machine)。

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

主机:localhost
港口:51701
用户:docker
密钥:.docker \ machine \ machines \ default \ id_rsa

当我改变我的腻子/ MobaXterm设置匹配,瞧,我可以SSH进入容器。

对于那里的黑客来说,这里有一个脚本,可以让你进入“主动式”docker机器。 这也为您提供了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 $docker_ssh_user@localhost 

您可以复制并粘贴到您的terminal,排队,它会工作。 或者,将脚本变成一个函数,并将其作为参数提供给它。

如果由于某种原因,你宁愿使用ssh命令而不是docker-machine ssh ,你可以这样做

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

对于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)列出可用的vms。

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

 docker@default:~$ uname -a Linux default 4.1.19-boot2docker #1 SMP Thu Apr 7 02:41:05 UTC 2016 x86_64 GNU/Linux 

你也可以按照这个> howto – docker