如何Ssh到Vagrant内运行的docker容器?

时间:2015-02-04 10:10:49

标签: vagrant docker

我在Windows 7下运行Vagrant VM。 Vagrant VM正在运行一个docker容器。所以配置是:

Windows7[Vagrant[Docker]]

我想从Windows ssh到Docker容器。

docker容器正在运行sshd,我可以成功地从Vagrant VM ssh到Docker容器。

sudo docker ps

给出:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
64b13daab5f2        ubuntu:12.04        "/bin/bash"         14 minutes ago      Up 14 minutes       0.0.0.0:49153->22/tcp   thirsty_morse

来自Vagrant VM:

ssh root@localhost -p 49153

工作得很好。所以Vagrant VM的端口49153被转发到Docker容器的端口22。

我已添加

config.vm.network "forwarded_port", guest:49153, host:49155

到Vagrantfile,以便Windows上的localhost:49155转发到Vagrant VM:49153

这是事情发生的地方。当我尝试从Windows ssh到localhost:49155时,我得到:

ssh: connect to host localhost port 49155: Connection refused

所以Windows:49155 - >流浪汉:49153无法正常工作。我认为这可能是与在Vagrant VM的外部IP上侦听端口有关的问题所以我已经将rinetd安装到Vagrant虚拟机中并且我已经完成了:

bindadress    bindport  connectaddress  connectport
0.0.0.0       49153     127.0.0.1       49153

仍然没有运气。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

好的,回答我自己的问题。它现在有效。我认为问题最可能的原因是端口49153/55及其邻居默认情况下实际上被某些Windows服务使用。我改为映射Vagrant文​​件中的端口以使用9090 for Windows,一切正常。也不需要rinetd。我也做过:

sudo docker run -v /vagrant:/opt/data -p 0.0.0.0:49153:22 -i -t ubuntu:12.04

请注意0.0.0.0:它可能相关也可能不相关,但此配置对我有效。