我正在运行 Mac 版 Docker(版本 1.12.0-rc2-beta16(内部版本:9493))。
我已从本地存储库中提取了一个映像,并使用“docker run -d”创建了一个容器。使用“docker ps”我获得了“CONTAINER ID”,然后使用“docker inform |” grep IPA' 获取正在运行的容器的 IP 地址。
我现在想使用 SSH 和“ssh root@”连接到容器,但该命令给出以下错误:“操作超时”。
进一步调查显示我无法 ping -> 'Request timeout for icmp_seq 0'
如何使用 SSH 连接到容器?正确的命令是什么?
更新:这不是重复的(如上所述)。以“您描述的场景”开头的条目是正确的解决方案。
您所描述的场景是将在“普通”Docker 上使用的方法。
由于 Mac 上的 Docker 是专为 Mac 从头开始创建的,因此对其进行了调整以使其更易于使用。因此,在Mac上不能以这种方式使用容器的IP地址。
文档Mac 版 Docker 入门 https://docs.docker.com/docker-for-mac/指出:
以前的测试版使用 docker 作为主机名来构建 URL。
从此版本开始,端口在私有 IP 上公开
VM 的地址并转发到没有其他主机名的本地主机
放。另请参阅 Beta 9 发行说明。
因此,通过 SSH 连接到容器的正确方法是使用映射到 SSH 端口 (22) 的端口在 Docker for Mac 上启动容器。例如
docker run -d -p 2022:22 <Image Name>
并且使用此命令启动 SSH 连接(注意,它在指定的端口上使用“localhost”,而不必确定和使用容器的 IP 地址):
ssh -p 2022 root@localhost
注意:不可能简单地将端口 22 映射到其自身,即“-p 22:22”,因为这会导致以下错误(至少对我来说是这样!):
docker:来自守护程序的错误响应:驱动程序外部编程失败
端点 penitive_wilson 上的连接
(2e832b82fc67d3e48864975c6eb02f6c099e34eee64b29634cfde286c41e00a7):
启动用户态代理时出错:绑定失败:EADDRINUSE。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)