我有一个应用程序,现在正在Ubuntu上运行,但最终它应该可以在Raspberry Pi上运行。整个应用程序都是用docker-compose打开的。它里面有三个容器,其中一个是用Python写的Flask Api。现在我需要为我的Flask Api添加两个端点。一个用于系统关闭,一个用于系统reebot。
我想写一些python代码或者bash脚本来执行这些操作,但是这里的问题是所有的操作都在docker上运行。比如说,简单的linux命令shutdown -h now
不起作用,因为docker告诉我们没有找到shutdown。有没有可能从运行在docker上的应用程序中关闭ubuntu/ raspberry pi?
1条答案
按热度按时间gtlvzcf81#
在基于Debian的系统上(假设你在你的raspberry pi上运行raspian),
shutdown
和reboot
只是systemctl
的符号链接。因此,您需要能够在主机上从docker中运行
systemctl
命令。这可以通过几个卷挂载来实现。以下是docker-compose
文件的示例片段:Map了这些卷后,您应该能够从Docker容器中运行
systemctl shutdown
或systemctl reboot
。可能需要以特权模式运行容器。