在Dockerfile中运行/usr/sbin/sshd不起作用

在Dockerfile中运行/usr/sbin/sshd不起作用,docker,Docker,在Dockerfile中,我想启动ssh守护进程,然后给bash: from fedora run yum -y install openssh-server openssh-clients openssh run yum clean all run echo "PermitRootLogin yes">>/etc/ssh/sshd_config run ssh-keygen -A run ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa run ca

在Dockerfile中,我想启动ssh守护进程,然后给bash:

from fedora
run yum -y install openssh-server openssh-clients openssh
run yum clean all
run echo "PermitRootLogin yes">>/etc/ssh/sshd_config
run ssh-keygen -A
run ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
run cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
run /usr/sbin/sshd
expose 22
cmd /usr/bin/bash
我创建图像并从中启动一个容器

$ sudo docker build -t test/openssh .

$ sudo docker run -it --rm  -P test/openssh

但在容器中,我看到sshd没有运行。为什么不呢?

您的
Dockerfile
中的
运行
命令是用于在容器中设置、安装和/或配置软件的bash命令。此命令将在docker映像构建过程中运行(并将结束),任何假定启动守护进程的
run
命令都将不起作用。它们是启动容器时在容器内运行各种进程的一些模式。最常见的一种是使用(在本官方文档中,您可以看到一个使用它运行ssh守护程序的示例)。

它可以正常工作。但是现在我使用systemd而不是supervisord。@Javier Cortejoso:请您将嵌入的URL更新为
supervisord