无法通过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服务器,但是您已经重写了Dockerfile
的CMD
条目,只启动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