use*_*191 3 beta macos ssh docker
我正在运行Docker for Mac(版本1.12.0-rc2-beta16(版本:9493)).
我从本地存储库中提取了一个图像,并使用"docker run -d"创建了一个容器.使用'docker ps'我获得'CONTAINER ID',然后使用'docker inspect <CONTAINER_ID> | grep IPA'获取正在运行的容器的IP地址.
我现在想使用带有'ssh root @ <IP address>'的SSH连接到容器,但该命令会出现以下错误:'operation timed out'.
进一步的调查显示,我无法ping <IP地址> - >'icmp_seq 0'的请求超时
如何使用SSH连接到容器?什么是正确的命令?
更新:这不是重复(如上所述).以"您描述的方案"开头的条目是正确的解决方案.
小智 9
您描述的场景是在"普通"Docker上使用的方法.
由于Mac上的Docker是专门为Mac创建的,因此它已经过调整以使其更易于使用.因此,在Mac上无法以这种方式使用容器的IP地址.
文档Docker for Mac入门指出:
以前的beta版本使用docker作为构建URL的主机名.从此版本开始,端口将公开在VM的专用IP地址上,并转发到localhost,而不设置其他主机名.另请参见Beta 9的发行说明.
因此,SSH到容器的正确方法是使用端口映射到SSH端口在Docker for Mac上将其旋转(22).例如
docker run -d -p 2022:22 <Image Name>
Run Code Online (Sandbox Code Playgroud)
并且使用此命令启动SSH连接(NB在指定的端口上使用'localhost',而不必确定和使用容器的IP地址):
ssh -p 2022 root@localhost
Run Code Online (Sandbox Code Playgroud)
NB不可能简单地将端口22映射到自身,即'-p 22:22',因为这会导致以下错误(至少对我来说是这样的!):
docker:来自守护程序的错误响应:驱动程序无法在端点上编程外部连接pensive_wilson(2e832b82fc67d3e48864975c6eb02f6c099e34eee64b29634cfde286c41e00a7):启动userland代理时出错:无法绑定:EADDRINUSE.
要使用bash提示,您可以使用docker exec -ti %container-name-or-id% /bin/bash.如果要使用ssh并确保ssh守护程序已启动并运行,则应使用以下-p参数从容器中公开相应的端口:docker run -d -p 22:22 my_image.
| 归档时间: |
|
| 查看次数: |
10758 次 |
| 最近记录: |