SSH直接进入Docker实例

SSH直接进入Docker实例,docker,ubuntu,ssh,docker-machine,Docker,Ubuntu,Ssh,Docker Machine,我想将SSH直接连接到运行在ubuntuvm上的docker映像的bash中。虚拟机拥有公共ip 我想从远程机器SSH到这个docker映像。我已经将我的远程机器的身份验证密钥添加到我的Ubuntu虚拟机中。然后在VM上用bash启动docker映像,命令如下: docker exec -it CONTAINER_ID bash 当我从远程计算机运行SSH命令时,如下所示: ssh -i path/to/private/key username_VM@ip_VM 我直接ssh到ubuntuv

我想将SSH直接连接到运行在ubuntuvm上的docker映像的bash中。虚拟机拥有公共ip

我想从远程机器SSH到这个docker映像。我已经将我的远程机器的身份验证密钥添加到我的Ubuntu虚拟机中。然后在VM上用bash启动docker映像,命令如下:

docker exec -it CONTAINER_ID bash
当我从远程计算机运行SSH命令时,如下所示:

ssh -i path/to/private/key username_VM@ip_VM

我直接ssh到ubuntuvm中,但没有到docker映像中。如何通过ssh直接在VM上运行docker映像?

您需要使用
-p
将docker实例的ssh端口公开给外部世界。如果运行此映像的主机已将端口22用于其SSH服务器,则需要使用其他端口号

试试看

docker-run-p 2222:22 yourimage
然后

ssh-ipath/to/private/key-p2222用户名_VM@ip_VM

通过SSH登录实例。

这是否回答了您的问题?如果您确实在虚拟机上运行Docker,那么可能需要额外的路由来将流量从主机系统传递到虚拟机。也许你应该在你的问题中澄清这一点。VM下面的操作系统是什么?您使用的是哪个虚拟化平台?为什么在里面运行Docker?如何直接ssh到浏览器中?不是主机系统,而是浏览器本身?Docker映像通常只运行一个进程,它几乎从来都不是ssh守护进程(而且几乎不可能正确设置凭据)。我不会担心这个特殊的情况,也可以考虑“如何将SSH直接导入运行坞”的意思。为什么不ssh到远程机器,然后
docker exec-it container id/bin/bash
到docker?有没有可能我不使用端口2222,而是使用-p 22:22,这样我就不必在ssh命令中输入端口号了?我尝试为转发端口22运行docker命令,但它退出时出现以下docker错误:docker:来自守护进程的错误响应:驱动程序未能在端点上编程外部连接。启动userland proxy时出错:listen tcp 0.0.0:22:bind:address已在使用中。这正是我在回答中所解释的。您已经有了一个使用该端口的SSH守护进程,因此需要使用不同的端口号。或者,关闭主机系统的SSH守护程序(但绑定端口22需要特权访问;即使没有
sudo
,也不确定Docker是否可以这样做)。当然,在
.SSH/config
中指定端口号可以避免每次连接时都不显式指定端口号,如果这是你想要避免的。