Linux 当使用centos/systemd作为基本映像时,如何在docker file CMD中启动init文件和shell脚本文件?

Linux 当使用centos/systemd作为基本映像时,如何在docker file CMD中启动init文件和shell脚本文件?,linux,image,docker,containers,Linux,Image,Docker,Containers,我的基本映像是centos/systemd。因此My cmd将包含/usr/sbin/init,但我还希望在创建容器时运行shell脚本文件 我的Dockerfile: FROM centos/systemd #RUN yum -y install dos2unix CMD ["usr/sbin/init"] //here i also want to launch a shell script file 使用解决方案进行编辑: FROM centos/systemd ADD /

我的基本映像是
centos/systemd。因此
My cmd将包含
/usr/sbin/init
,但我还希望在创建容器时运行shell脚本文件

我的Dockerfile:

FROM centos/systemd

#RUN yum -y install dos2unix


CMD ["usr/sbin/init"]   //here i also want to launch a shell script file

使用解决方案进行编辑:

FROM centos/systemd 

ADD /path-to-hello/hello.sh ./ 
ENTRYPOINT ["./hello.sh"]
hola.sh
中的最后一行是
exec/usr/sbin/init

构建docker:
docker构建-t DockerAgent名称:1.0。


运行docker:
docker运行——名称DockerName DockerAgent名称:1.0

您已经尝试了什么?您是否需要systemd,如果需要,原因是什么?另一个明显的替代方法是将脚本重新编译成systemd单元文件。@DavidMaze init是一个二进制文件,因此我们无法将脚本重新编译成systemd的init文件。我需要systemd来启动一些进程,systemd还有许多其他原因。您可以详细解释如何使用--init。我的用例是我需要运行/usr/sbin/init,并且创建容器时使用shell脚本文件,但docker文件只能有一个CMD。我认为您需要使用
ENTRYPOINT
,而不是
CMD
。脚本中的最后一行可以是
exec/usr/sbin/init
,使用它,您可以在创建容器时运行脚本和
/usr/sbin/init
。我认为您需要使用
入口点,而不是'CMD
。脚本中的最后一行可以是
exec/usr/sbin/init`,使用它可以在创建容器时执行脚本和`/usr/sbin/init`。假设我的shell文件名是hello.sh,服务是/usr/sbin/init如何在从centos/systemd添加/path到hello/hello.sh./ENTRYPOINT创建容器时同时运行这两行代码[“/hello.sh”]
hola.sh中的最后一行是
exec/usr/sbin/init
Build docker:
docker Build-t dockeriagename:1.0。
Run docker:
docker Run--name DockerName dockerame dockeriagename:1.0