如何SSH进入Vagrant 1.6 Docker Provider设置的boot2docker host vm?

我在OSX上,我希望能够SSH进入主机虚拟机,以便:

  1. 访问本地docker环境。 这有助于理解和debugging端口转发问题。
  2. Vagrant rsync似乎留下了大量未使用的同步目录,这些目录耗尽了我想要恢复的磁盘空间。

清楚的是,这个问题并不是关于ssh:进入Vagrant提供者创build的docker容器,而是进入到vagrant创build的中间boot2docker主机vm中。

我知道一个解决方法是不使用默认的boot2docker作为主机虚拟机(在这里的答案中解释),但这不是什么问题。

Vagrant的boot2docker保持boot2docker的ssh用户名和密码。

SSH到虚拟机

 $ boot2docker ssh 

Boot2Docker使用生成的SSH密钥自动login,但是如果您想要手动通过SSHlogin到计算机(或者您未使用boot2dockerpipe理的虚拟机),则凭据是:

 user: docker pass: tcuser 

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

该端口默认从本地端口2022转发。 你可以validation这一点:

 $ 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 

然后login:

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

2015年10月:Boot2docker已弃用,以Docker-machine为例。 login:

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

您可以通过vagrant ssh docker-host-id ssh进入docker主机,但首先需要知道docker-host-id。
您可以使用vagrant global-status命令获取所有活动的stream浪环境列表。
要获取docker-host id,您可以使用grep进行过滤:

vagrant global-status | grep docker-host

您将获得类似于以下的输出:

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

复制第一列id,然后ssh进入docker-host:

vagrant ssh 68f58d0

stream浪的全球状况文件

你也可以放弃使用boot2dockersshfunction,像这样“手动”

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

-p的参数通常是2022端口,但上面显示了如何以编程方式确定如果你想要的。

您可以直接使用SSH:

 ssh docker@$(boot2docker ip) 

(密码:tcuser,请参阅https://github.com/boot2docker/boot2docker#ssh-into-vm


你也可以将你的公钥复制/粘贴到boot2docker机器上,所以你不需要每次input密码:

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

对于有stream浪口令的stream浪主机:

 ssh -p 2222 vagrant@localhost 

否则用tcuser密码:

 ssh -p 2222 docker@localhost 

这里有更多的信息,为什么这个工程。