如何通过SSH连接到Vagrant 1.6 Docker提供程序设置的boot2docker主机vm中?
我在OSX上,我希望能够通过SSH连接到主机vm,以便:如何通过SSH连接到Vagrant 1.6 Docker提供程序设置的boot2docker主机vm中?,vagrant,docker,boot2docker,Vagrant,Docker,Boot2docker,我在OSX上,我希望能够通过SSH连接到主机vm,以便: 访问本机docker环境。这有助于理解和调试端口转发问题 Vagrant rsync似乎留下了许多未使用的同步目录,这些目录占用了我想要恢复的磁盘空间 要明确的是,这个问题不是ssh:插入Vagrant提供程序创建的docker容器,而是插入Vagrant创建的中间boot2docker主机vm 我知道一个解决办法是不使用默认的boot2docker作为主机vm(如答案中所述),但这不是这个问题的重点。Vagrant的boot2docke
我知道一个解决办法是不使用默认的boot2docker作为主机vm(如答案中所述),但这不是这个问题的重点。Vagrant的boot2docker保留boot2docker的ssh用户名和密码 SSH到虚拟机 Boot2Docker使用生成的SSH密钥自动登录,但如果您想使用SSH登录 手动启动机器(或者您没有使用
boot2docker
managed虚拟机),凭据包括:
user: docker
pass: tcuser
默认情况下,该端口从本地端口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:~$
$sshdocker@localhost-第2022页
docker@localhost的密码:tcuser
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______o__/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker:0.8.0
docker@boot2docker:~$
您可以使用vagrant ssh docker host id
ssh进入docker host,但首先您需要知道docker-host-id。您可以使用
Vagrant global status
命令获取所有活动的流浪环境的列表。要获取docker主机id,您可以使用grep进行筛选:
vagrant全球状态| grep docker主机
您将获得类似以下内容的输出:
68f58d0 default virtualbox running /Users/yourUser/.vagrant.d/data/docker-host
复制第一列id,然后将ssh复制到docker主机:
vagrant ssh 68f58d0
您也可以放弃使用
boot2docker
的ssh
功能,像这样“手动”完成:
-p
的参数通常是端口2022,但上面显示了如果需要,如何通过编程确定此参数。您可以直接使用SSH:
ssh docker@$(boot2docker ip)
(密码:tcuser,请参阅)
您还可以将公钥复制/粘贴到boot2docker计算机,因此无需每次键入密码:
cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
2015年10月:Boot2docker被弃用,取而代之的是docker机器。要登录:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
$ docker-machine ssh default
对于具有流浪密码的流浪主机:
ssh -p 2222 vagrant@localhost
ssh -p 2222 docker@localhost
否则使用tcuser密码:
ssh -p 2222 vagrant@localhost
ssh -p 2222 docker@localhost
是关于为什么这样做的更多信息。关于
vagrant ssh
?这将ssh到由vagrant docker提供程序提供的docker容器中,而不是到boot2docker主机vm中。我相信这是最好的答案。我有“常规”boot2docker,我有Vagrant启动的boot2docker。其他答案将我连接到“常规”boot2docker机器,而不是Vagrant使用的机器。您也可以使用生成的标识文件。“ssh-I~/.ssh/id_boot2docker docker@$(boot2docker ip)”这是现在最简单和最新的方法。在最新的docker中,这已从boot2docker
更改为docker-machine
。具体而言,现在是docker-machine-ssh-default
如果您想从mobaXterm或任何其他ssh客户端进行ssh,这将非常有用