无法连接到ibmnode:基于最新的容器与putty over ssh

时间:2015-05-28 18:39:53

标签: ssh docker containers ibm-cloud

我无法连接到已创建的容器。这是Dockerfile

FROM registry-ice.ng.bluemix.net/ibmnode:latest

COPY id_rsa.pub /root/.ssh/
RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

RUN DEBIAN_FRONTEND=noninteractive apt-get -y install git && mkdir /vApp

COPY . vApp
RUN cd vApp && npm install -d --production

EXPOSE 3000 22
CMD ["node", "vApp/app.js"]

这是ice ps的输出:

Container Id                         Name                   Group      Image                          Created      State    Private IP      Public IP       Ports

bbf72b72-6377-4c53-afdf-a133eed1872c toto                                                             May 28 17:31 Running  172.31.0.9      129.41.226.101  [3000, 22]

但无法通过SSH连接到容器。 我可以ping容器,但是端口22上的连接被拒绝。

由于

2 个答案:

答案 0 :(得分:1)

虽然ibmnode映像确实安装了ssh服务器,但您已覆盖CMD中的Dockerfile条目以仅启动Node.js应用程序,这意味着{{运行容器时,守护程序未运行。请注意,如果您sshd ibmnode 图片,您会发现当前docker inspect设置为:

Cmd

虽然强烈建议使用"Cmd": [ "/usr/bin/supervisord", "-n" ], 来访问容器,但此时Bluemix Container服务不允许docker exec访问容器,因此您将遇到使用主管启动ssh守护程序和Node.js应用程序。这很简单地从其他人那里复制了,但揭示了为什么Docker的核心设计是每个容器一个进程的另一个原因,因为它简化了容器配置和docker exec / CMD设置。

答案 1 :(得分:0)

我一直在使用 supervisord 为我的容器设置ssh访问。

在我的Dockerfile中,我这样做     运行mkdir -p / var / run / sshd     添加sshd.conf /etc/supervisor/conf.d/sshd.conf

ADD id_rsa.pub /root/.ssh/id_rsa.pub
RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

# the line below is needed for SSH to work with ubuntu 14.04
RUN sed -i 's/session \+required \+pam_loginuid\.so/session optional pam_loginuid.so/' /etc/pam.d/sshd

EXPOSE 22

我的sshd.conf读取

[program:sshd]
command=/usr/sbin/sshd -D