您能否让我知道如何在一个 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 运行这两个吗?
编辑
我想在这个容器中设置实验环境。
需要
/sbin/init
才能在docker中运行systemctl
。
即使来自 root,也不允许从 insmod
使用
RUN
。目前它是在容器中手动完成的,但我想自动化它
这就是为什么需要
CMD
中的 insmod 和 /sbin/init。
要使用
CMD
运行多个命令,您可以使用:
CMD ["/bin/bash", "-c", "command1 && command2"]
为什么要尝试通过运行
/sbin/init
在容器中运行完整的操作系统服务是另一个问题。这样做不是正常做法。容器通常只运行一个应用程序。根据容器运行时的设置方式,您甚至可能无法运行所有正常的操作系统服务或命令。