我在OSX上,我希望能够通过SSH连接到主机vm,以便:
访问本机docker环境.这有助于理解和调试端口转发问题.
Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间.
要明确的是,这个问题不是关于ssh:进入Vagrant提供程序创建的docker容器,而是关于Vagrant创建的中间boot2docker主机vm.
我知道,一个解决方法是不使用默认的boot2docker作为主机VM(如答案解释这里),但这不是这个问题是关于什么的.
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
Vagrant的boot2docker保留了boot2docker的ssh用户名和密码.
SSH进入VM
$ boot2docker sshBoot2Docker使用生成的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:~$
您也可以放弃使用boot2docker
的ssh
功能并"手动"执行此操作:
$ ssh \ -i $HOME/.ssh/id_boot2docker \ -p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \ docker@localhost
参数-p
通常是端口2022,但上面显示了如何根据需要以编程方式确定.
您可以使用ssh进入docker主机,vagrant ssh docker-host-id
但首先您需要知道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
流浪的全球状态文档