如何通过SSH连接到Vagrant 1.6 Docker Provider设置的boot2docker主机vm?

时间:2014-06-18 12:47:05

标签: vagrant docker boot2docker

我在OSX上,我希望能够通过SSH连接主机vm以便:

  1. 访问本机docker环境。这有助于理解和调试端口转发问题。
  2. Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间。
  3. 要清楚,这个问题不是关于ssh:进入Vagrant提供程序创建的docker容器,而是进入Vagrant创建的中间boot2docker主机vm。

    我知道解决方法是不使用默认的boot2docker作为主机vm(如答案here中所述),但这不是这个问题的内容。

6 个答案:

答案 0 :(得分:100)

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

  

SSH进入VM

$ boot2docker ssh
     

Boot2Docker使用生成的SSH密钥自动登录,但是如果要进入SSH   手动(或您没有使用boot2docker托管VM)的机器,凭据是:

user: docker
pass: tcuser

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

默认情况下,端口从本地端口2022转发。您可以验证这一点:

$ 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

然后登录:

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

答案 1 :(得分:15)

2015年10月:不推荐使用Boot2docker而使用docker-machine。登录:

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

$ docker-machine ssh default

答案 2 :(得分:11)

您可以使用vagrant ssh docker-host-id ssh到docker主机,但首先您需要知道docker-host-id。
您可以使用vagrant global-status命令获取所有活动Vagrant环境的列表 要获取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

vagrant global status docs

答案 3 :(得分:7)

您也可以放弃使用boot2docker的{​​{1}}功能并执行此操作&#34;手动&#34;像这样:

ssh

$ ssh \ -i $HOME/.ssh/id_boot2docker \ -p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \ docker@localhost 的参数通常是端口2022,但上图显示了如果需要,您可以通过编程方式确定它。

答案 4 :(得分:2)

您可以直接使用SSH:

ssh docker@$(boot2docker ip)

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


您还可以将公钥复制/粘贴到boot2docker计算机,因此您无需每次都输入密码:

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

答案 5 :(得分:2)

对于带有 vagrant 密码的流浪汉主机:

ssh -p 2222 vagrant@localhost

否则使用 tcuser 密码:

ssh -p 2222 docker@localhost

Here提供了有关其工作原理的更多信息。