无法通过ssh连接到基于ibmnode:latest的容器

我无法连接到创build的容器。 这是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"] 

这里是冰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上。

谢谢

虽然ibmnode映像确实安装了ssh服务器,但是您已经重写了DockerfileCMD条目,只启动Node.js应用程序,这意味着运行容器时sshd守护程序未运行。 请注意,如果您使用docker docker inspect ibmnode映像,您将会发现当前的Cmd设置为:

 "Cmd": [ "/usr/bin/supervisord", "-n" ], 

尽pipe强烈build议使用docker exec来访问容器,但是此时Bluemix Container服务不会启用docker docker exec访问容器,所以你将会遇到一些解决scheme,比如使用pipe理员来启动ssh守护进程和你的Node.js应用程序。 这是从其他谁做了相同的,但揭示了为什么Docker的核心devise是每个容器一个进程简化了容器configuration和CMD / ENTRYPOINT设置的另一个原因。

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

在我的Dockerfile中,我运行mkdir -p / var / run / sshd ADD 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