在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没有运行。为什么不呢?
答案 0 :(得分:4)
RUN
中的Dockerfile
命令是用于在容器内设置,安装和/或配置软件的bash命令。在docker镜像构建期间,此命令将运行(并将结束),并且任何应该启动守护程序进程的RUN
命令都将无法运行。它们是在启动容器时在容器内运行各种进程的一些模式。其中最常见的是使用supervisord(在此官方文档中,您可以看到使用它来运行ssh守护程序的示例)。