您能告诉我如何在一个CMD中运行insmod
和/sbin/init
。
我用一个波纹管CMD编写了Dockerfile
CMD [ "insmod", "a_module.ko", "&&", "/sbin/init" ]
CMD insmod a_module.ko && /sbin/init
然后我跑
docker run -p 8080:80 -p 4433:443 -it --rm -d --cap-add=ALL --privileged <image id>
它会发出容器ID,但docker ps
没有显示任何内容。
只有第二个CMD可以安装a_module
,但该过程没有运行。
您是否有任何想法从一个CMD运行这两个?
修改
我想在这个容器中设置实验环境。
在docker中运行/sbin/init
需要systemctl
。
insmod
不允许来自RUN
,即使它来自root。目前它是在容器中手动完成的,但我想自动化它
这就是CMD
需要insmod和/ sbin / init的原因。
答案 0 :(得分:0)
要使用CMD
运行多个命令,您可以使用:
CMD ["/bin/bash", "-c", "command1 && command2"]
为什么您希望通过运行/sbin/init
来尝试在容器中运行完整的操作系统服务是另一个问题。这样做通常不常见。容器通常只运行一个应用程序。根据运行时容器的设置方式,您甚至可能无法运行所有正常的操作系统服务或命令。