【问题标题】:Unable to connect to an ibmnode:latest-based container with putty over ssh无法使用 putty over ssh 连接到 ibmnode:latest-based 容器
【发布时间】:2015-06-15 09:30:18
【问题描述】:

我无法连接到已创建的容器。这是 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 端口的连接被拒绝。

谢谢

【问题讨论】:

  • 我认为这可能是因为我在 FROM 中使用的 ibmnode:latest 映像未准备好 SSH。 ibmliberty:latest 已准备好 SSH,如 Bluemix 控制台中的 Containers 文档中所述,但 ibmnode 也可以吗?
  • 如果你只是想进入容器docker exec -it bbf7 bash 或者类似的命令会在容器内获得一个shell,请参阅文档docs.docker.com/reference/commandline/cli/#exec
  • 不是我想要达到的目标。我有一个外部服务器,它需要连接到端口 22,以便在容器运行时在容器上做一些事情。
  • 此外,我认为 docker exec 不能与在 Bluemix 中运行的容器一起工作。是吗?
  • 如果它是一个 docker 容器,它应该总是可以使用 docker exec 连接内部。我在registry.hub.docker.com/search?q=bluemix&searchfield= 查看了各种bluemix 容器,我发现没有任何东西可以阻止使用docker exec,当您在容器中时,检查端口22,如果安装了SSH,如果没有安装它

标签: ssh docker containers ibm-cloud


【解决方案1】:

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

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

虽然强烈建议使用docker exec 来访问容器,但此时Bluemix Container 服务不支持docker exec 访问容器,因此您将无法使用诸如使用主管启动这两个容器的解决方案ssh 守护进程和您的 Node.js 应用程序。这是从其他做过同样事情的人那里简单复制的,但揭示了 Docker 的核心设计是每个容器一个进程的另一个原因,因为它简化了容器配置和CMD/ENTRYPOINT 设置。

【讨论】:

    【解决方案2】:

    我一直在使用 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
    

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多