如何SSH进入Vagrant 1.6 Docker Provider设置的boot2docker host vm?
我在OSX上,我希望能够SSH进入主机虚拟机,以便:
- 访问本地docker环境。 这有助于理解和debugging端口转发问题。
- Vagrant rsync似乎留下了大量未使用的同步目录,这些目录耗尽了我想要恢复的磁盘空间。
清楚的是,这个问题并不是关于ssh:进入Vagrant提供者创build的docker容器,而是进入到vagrant创build的中间boot2docker主机vm中。
我知道一个解决方法是不使用默认的boot2docker作为主机虚拟机(在这里的答案中解释),但这不是什么问题。
Vagrant的boot2docker保持boot2docker的ssh用户名和密码。
SSH到虚拟机
$ boot2docker ssh
Boot2Docker使用生成的SSH密钥自动login,但是如果您想要手动通过SSHlogin到计算机(或者您未使用
boot2docker
pipe理的虚拟机),则凭据是: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浪的全球状况文件
你也可以放弃使用boot2docker
的ssh
function,像这样“手动”
$ 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
这里有更多的信息,为什么这个工程。