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

如何Ssh到在Vagrant中运行的docker容器中?,vagrant,docker,Vagrant,Docker,我在Windows7下运行一个流浪的虚拟机。流浪VM正在运行docker容器。因此,配置为: Windows7[Vagrant[Docker]] 我想从Windows ssh到Docker容器中 sudo docker ps docker容器正在运行sshd,我可以成功地从Vagrant VM用ssh连接到docker容器 sudo docker ps 给出: CONTAINER ID IMAGE COMMAND CREAT

我在Windows7下运行一个流浪的虚拟机。流浪VM正在运行docker容器。因此,配置为:

Windows7[Vagrant[Docker]]
我想从Windows ssh到Docker容器中

sudo docker ps
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
来自流浪汉:

ssh root@localhost -p 49153
很好用。所以,流浪者VM的端口49153被转发到Docker集装箱的端口22

我补充说

config.vm.network "forwarded_port", guest:49153, host:49155
转到Vagrant文件,以便将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 VM中,并完成了以下工作:

bindadress    bindport  connectaddress  connectport
0.0.0.0       49153     127.0.0.1       49153

还是不走运。我遗漏了什么?

好的,回答我自己的问题。现在可以了。我认为问题最可能的原因是端口49153/55和它的邻居实际上被一些windows服务默认使用。我将Vagrant文件中的端口映射改为在Windows中使用9090,一切正常。也没必要去跳舞。我还做了:

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

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

与问题没有直接关系-但在大多数情况下,您不应该在docker容器中需要ssh(除非您正在创建开发环境或使用需要ssh的软件)。也许docker exec对你来说就足够了?