我对码头工作者非常认真,发现自己面临以下问题:
我正在尝试使用我的公司软件创建一个dockerfile来生成图像。在安装该软件期间,安装过程使用以下命令检查ssh是否正在运行:
if [ $(pgrep sshd | wc -l) -eq 0 ]; then
我可能需要确定我在同一过程中安装并启动open-ssh。
在图像创建过程中,您是否可以检查服务是否正在运行?
我不能忽视该步骤是否作为自解压机制的一部分执行。
任何有关正确方向的线索都将受到赞赏。
答案 0 :(得分:1)
图片无法运行服务。您只需创建容器运行所需的所有必要事项,例如在Dockerfile中安装数据库,服务器或复制某些配置文件等。 Dockerfile的最后一步是您可以在发出docker run
命令时提供有关操作的说明。可以使用Dockerfile中的CMD或ENTRYPOINT指定脚本或命令。
要回答您的问题,在图像创建过程中,您无法检查服务是否正在运行。启动容器时,docker将执行您可以在CMD或ENTRYPOINT中指定的脚本或命令。您可以使用该脚本检查您的服务是否正在运行,并在此之后采取必要的措施。
答案 1 :(得分:0)
可以在创建映像期间运行服务。一旦 RUN 命令完成,所有进程都会被终止。服务不会在 RUN 命令之间保持运行。但是,每个 RUN 命令都可以启动服务并使用它们。
如果一个镜像创建命令需要一个服务,启动该服务,然后运行依赖该服务的命令,所有这些都在一个 RUN 命令中。
RUN sudo service ssh start \
&& ssh localhost echo ok \
&& ./install
如果服务无法启动,docker build
命令将失败。