运行 /usr/sbin/sshd 在 Dockerfile 中不起作用
run /usr/sbin/sshd in a Dockerfile does not work
在 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
中的 RUN
命令是您用来设置、安装 and/or 配置容器内软件的 bash 命令。此命令将在 docker 映像构建期间 运行(并将结束),并且任何本应启动守护进程的 RUN
命令都将不起作用。它们是启动容器时 运行 容器内各种进程的一些模式。最常见的一种是使用 supervisord(在此官方文档中,您可以看到一个将它用于 运行 ssh 守护程序的示例)。
在 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
中的 RUN
命令是您用来设置、安装 and/or 配置容器内软件的 bash 命令。此命令将在 docker 映像构建期间 运行(并将结束),并且任何本应启动守护进程的 RUN
命令都将不起作用。它们是启动容器时 运行 容器内各种进程的一些模式。最常见的一种是使用 supervisord(在此官方文档中,您可以看到一个将它用于 运行 ssh 守护程序的示例)。