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

时间:2015-03-06 21:46:02

标签: 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 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没有运行。为什么不呢?

1 个答案:

答案 0 :(得分:4)

RUN中的Dockerfile命令是用于在容器内设置,安装和/或配置软件的bash命令。在docker镜像构建期间,此命令将运行(并将结束),并且任何应该启动守护程序进程的RUN命令都将无法运行。它们是在启动容器时在容器内运行各种进程的一些模式。其中最常见的是使用supervisord(在此官方文档中,您可以看到使用它来运行ssh守护程序的示例)。