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

在一个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 

我创build图像并从中启动一个容器,

 $ sudo docker build -t test/openssh . $ sudo docker run -it --rm -P test/openssh 

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

Dockerfile中的RUN命令是DockerfileDockerfile中设置,安装和/或configuration软件的bash命令。 这个命令将在Docker镜像构build期间运行(并且将结束),任何应该启动守护进程的RUN命令都将不起作用。 当你启动它时,它们是一些在你的容器中运行各种进程的模式。 其中最常见的就是使用supervisord (在这个官方文档中你可以看到一个使用它来运行ssh守护进程的例子)。