在Docker容器中SSH到虚拟机

53次阅读
没有评论

问题描述

在使用基于Ubuntu Xenial的Docker镜像时,尝试在容器内部使用Vagrant和VirtualBox启动FreeBSD虚拟机。虚拟机成功配置,但是Vagrant无法通过SSH连接到虚拟机。用户还尝试在容器内部使用SSH调试,结果也是连接失败。用户在容器中运行的命令如下:

# ssh -vvv -p 2222 vagrant@127.0.0.1

用户还尝试在宿主操作系统中运行相同的命令,结果也是连接失败。用户使用以下命令运行容器:

docker run --privileged -v /dev:/dev -p 1111:2222 vm:latest

用户尝试使用轻量级镜像,成功启动了虚拟机。用户希望得到关于这个问题的建议和想法。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

解决方案1

根据用户的描述,SSH连接超时的问题可能与嵌套虚拟化限制有关。即使在BIOS中启用了虚拟化,容器中的虚拟机仍无法正常配置。用户在这里找到了类似的答案。

一旦在宿主操作系统上启动Docker容器,问题就会消失,虚拟机可以成功配置。

解决方案2

根据用户的评论,问题可能是由于嵌套虚拟化的使用。VirtualBox不支持嵌套虚拟化,可以在这里找到相关的问题报告。

在这个特定的问题报告中,有一个评论提到:“即使在启用了VT-x/AMD-V的情况下,仍然可以在VT-x/AMD-V启用的VirtualBox中作为客户机执行没有VT-x/AMD-V的VirtualBox。”。

部分情况下,可以通过只指定一个CPU来实现,但这并不能保证虚拟机的其他功能都能正常工作。在某些情况下,根据发行版和架构的不同,可能会出现一些限制,比如无法访问SSH等。

解决方案3

根据用户的评论,嵌套虚拟化涉及到处理器级别的特定中断,与核心数量无关。当在嵌套虚拟化层中操作时,必须深入了解其涉及的内容。对于像这样的深层次技术问题,希望回答能够提供清晰的分析,而不仅仅是猜测。建议用户深入研究如何在容器中运行不支持VT-x的VirtualBox,以解决问题。

以上是解决这个问题的几种可能方案,用户可以根据自己的情况选择适合的方法来解决SSH连接问题。

正文完