【问题标题】:Starting ssh service through ENTRYPOINT not working通过 ENTRYPOINT 启动 ssh 服务不起作用
【发布时间】:2021-07-16 19:01:46
【问题描述】:

我在运行带有 SSH 服务的 linux 容器时遇到了很多困难。跳过细节,SSH不是可选的,我必须拥有它。

我安装了 openssh-server:

运行
echo "**** 设置 openssh-server ****" &&
apt-get install -y openssh-server &&
sed -i "s|# PasswordAuthentication yes|PasswordAuthentication yes|g" /etc/ssh/sshd_config &&
mkdir /var/run/sshd

我正在尝试通过以下方式打开服务:

ENTRYPOINT 服务 ssh 重启 && bash

但是它不起作用。我尝试了多种方式来启动它,通过使用 CMD,通过制作一个可以启动服务的脚本,但它不起作用。更糟糕的是,这似乎对其他人有用(pull access denied repository does not exist or may require docker login

我用作基础的图像是 ubuntu:18.04。但是我切换到 jre/systemd-ubuntu:18.04,因为我认为缺少 systemd 可能会阻止服务运行,但这也不起作用。有什么建议可能是什么问题?

【问题讨论】:

  • 你不需要systemd。您可以在前台运行服务 (-D) 并将调试日志输出到 stderr (-e)。 Here is an ubunutu:18.04 based openssh-server image 如果有帮助的话。
  • 这似乎没有任何作用。我没有打印任何错误消息,服务仍未运行...
  • 不清楚你到底尝试了什么。例如我在生产中使用我的图像,它们工作正常。
  • 很酷,你让它工作了。正确,例如如果图像本身不正确,仅设置ENTRYPOINT(任何ENTRYPOINT)将无法解决任何问题(如果主机密钥丢失或/var/run/sshd不存在,openssh-server将无法启动-I use a VOLUME to make sure that directory is created )。
  • 我的猜测是一开始它没有工作,因此我添加了这个文件但是我有其他改变破坏了图像:)

标签: docker ssh


【解决方案1】:

我设法让我的服务运行,作为第一个建议,我建议确保该服务在与其他服务一起运行之前自行运行。在我的情况下,似乎 ssh 服务没有启动,因为以前的非返回服务已启动,这将保持 shell 被占用并且不会让它继续它是 ENTRYPOINT 执行以启动 SSH。

我之前做过的另一件事可能是解决方案的一部分,那就是我手动创建了文件夹/var/run/sshd。似乎某些 ssh 服务版本需要存在,否则它们将无法运行。在这一点上,我无法验证这是否是唯一的问题,因为我一次尝试了多种解决方案。

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2012-05-04
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多