如何通过SSH连接到Mac容器中的Docker

时间:2016-06-22 10:48:01

标签: macos ssh docker beta

我正在运行Docker for Mac(版本1.12.0-rc2-beta16(版本:9493))。

我从本地存储库中提取了一个图像,并使用“docker run -d”创建了一个容器。使用'docker ps'我获得'CONTAINER ID',然后使用'docker inspect< CONTAINER_ID> | grep IPA'获取正在运行的容器的IP地址。

我现在想使用SSH连接到容器'ssh root @< IP address>'但该命令给出以下错误:'操作超时'。

进一步调查显示我无法ping< IP地址> - > '请求icmp_seq 0超时'

如何使用SSH连接到容器?什么是正确的命令?

更新:这不是重复(如上所述)。以“您描述的方案”开头的条目是正确的解决方案。

2 个答案:

答案 0 :(得分:9)

您所描述的场景是将在“普通”Docker上使用的方法。

由于Mac上的Docker是专门为Mac创建的,因此它已被调整以使其更易于使用。因此,在Mac上无法以这种方式使用容器的IP地址。

文档Getting Started with Docker for Mac声明:

  

以前的测试版使用docker作为构建URL的主机名。   从此版本开始,端口将在私有IP上公开   VM的地址并转发到localhost而没有其他主机名   组。另请参见Beta 9的发行说明。

因此,SSH到容器的正确方法是使用端口映射到SSH端口在Docker for Mac上将其旋转(22)。 e.g。

 docker run -d -p 2022:22 <Image Name>

使用此命令启动SSH连接(N.B.它在指定的端口上使用'localhost',而不必确定和使用容器的IP地址):

 ssh -p 2022 root@localhost

N.B。不可能简单地将端口22映射到自身,即'-p 22:22',因为这会导致以下错误(至少对我来说是这样的!):

  

docker:来自守护程序的错误响应:驱动程序无法编程外部   终端上的连接性pensive_wilson   (2e832b82fc67d3e48864975c6eb02f6c099e34eee64b29634cfde286c41e00a7):   启动userland代理时出错:无法绑定:EADDRINUSE。

答案 1 :(得分:5)

要使用bash提示,您可以使用cxLabel1.MyStuff.DoSomething(); 。如果要使用ssh并确保ssh守护程序已启动并运行,则应使用docker exec -ti %container-name-or-id% /bin/bash参数从容器中公开相应的端口,如下所示:-p