openssh-server 未在 Docker 容器中启动

brg*_*brg 5 ssh openssh container docker

我有一个奇怪的问题。

我无法通过 ssh 连接到具有 ip 地址的 docker 容器172.17.0.61

我收到以下错误:

$ ssh 172.17.0.61
ssh: connect to host 172.17.0.61 port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

我的Dockerfile确实包含openssh-server安装步骤:

RUN apt-get -y install curl runit openssh-server
Run Code Online (Sandbox Code Playgroud)

并且还步骤启动 ssh:

RUN service ssh start
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

当我进入容器使用nsenter并启动ssh服务时,我就可以 ssh 了。但是在创建容器时ssh-server似乎没有开始。

我该怎么办?

小智 6

容器与图像

RUN语句用于在构建 docker 镜像时运行命令。
使用ENTRYPOINTCMD您可以定义在使用该映像启动容器时要运行的内容。
有关如何使用它们的说明,请参阅Dockerfile 参考

服务

容器中没有预装init-system,所以不能service ... start在容器中使用。
考虑将CMD语句中的进程作为前台进程启动,或者使用 Phusion 或 Supervisord 等初始化系统。