【问题标题】:Automate starting ssh service after running the container运行容器后自动启动 ssh 服务
【发布时间】:2019-11-24 04:49:13
【问题描述】:
  • 我正在研究一个用于创建 Android docker 映像的 Dockerfile。
  • 创建镜像并运行容器后,我使用命令(service ssh status)检查了ssh服务,发现ssh服务没有运行。
  • 我尝试在 Dockerfile 上放置一些命令,例如:

    • CMD ["/usr/sbin/sshd","-D"]
    • 暴露 22
    • 运行服务 ssh 启动

但是这些命令在容器运行后都无法运行 ssh 服务。

有人可以帮忙吗?

【问题讨论】:

  • 为什么需要在 android docker 容器中运行 ssh 服务?
  • 分享一个我们可以复制的最小示例。
  • 我正在使用 Android 容器作为 jenkins 从节点,并且能够通过 ssh 连接主节点和从节点,否则应该运行 ssh 服务,它会拒绝连接。
  • Dockerfile 用于在构建时在中间容器内运行命令。您必须使用 cmd 或 entrypoint 在运行时运行服务。
  • 我确实使用了 CMD,最后一次试用是使用这个命令: CMD ["/usr/sbin/sshd","-p","22"] 但是,ssh 服务在运行时仍然关闭并且只能手动启动。

标签: docker ssh kubernetes openssh


【解决方案1】:

我已使用this link 中的步骤在 Docker 容器中成功运行 SSH 服务。

以下是对我有用的 Dockerfile:

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:THEPASSWORDYOUCREATED' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

您还可以在 Docker Hub 上尝试以下 Docker 映像,以在容器内启用 SSH 服务器:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-27
    • 2023-03-10
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多