我无法连接到已创建的容器。这是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上的连接被拒绝。
由于
答案 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