二手jrei / systemd-ubuntu码头工人形象,我做了一个容器。参考:https://hub.docker.com/r/jrei/systemd-ubuntu/dockerfile
我的最终目标是使用systemctl添加新服务,并在容器启动时执行它。
所以我做了如下3例测试。
在sh文件中执行/ lib / systemd / systemd
!/bin/bash
while true do
/lib/systemd/systemd
result=$(ps -ax|grep -v grep|grep systemd-journald)
if [ "${#result}" -ne 0 ]
then
systemctl daemon-reload
systemctl start gunicorn
systemctl enable gunicorn
break
else
echo "${#result}"
fi
done
结果:发生错误
msg:尝试作为用户实例运行,但系统尚未使用systemd引导。
docker-compose.yml中的添加命令
command:
- /bin/bash/
- /root/test.sh
结果:发生错误
msg:尝试作为用户实例运行,但系统尚未使用systemd引导。
基于jrei / systemd-ubuntu重建dockerfile
FROM jrei/systemd-ubuntu
COPY service/* /etc/systemd/system/
COPY test.sh /root/test.sh
RUN chmod +x /root/systemctl_cmd.sh
VOLUME [ "/sys/fs/cgroup" ]
ENTRYPOINT ["/root/systemctl_cmd.sh"]
结果:发生错误
msg:尝试作为用户实例运行,但系统尚未使用systemd引导。
即使我测试了3次,也找不到任何方法。
因此,我希望对如何在上述命令中运行有任何了解。我想知道如何获取有关系统启动状态的信息。我认为如果在完成引导状态后运行systemctl命令,它就可以正常工作。
任何想法或技巧都很好。
systemctl enable --global foo.service
”。如果您希望启动该服务,则请输入syy“ systemctl enable --now foo.service
”。毕竟:互联网上有更好的例子,如何将容器像虚拟机一样与systemd一起使用。这还包括docker-systemctl-replacement项目,您还可以在其中查看docker-systemctl-images示例。