ubuntu 从Docker内的 flask 应用程序重启和关闭系统

4c8rllxm  于 2022-11-02  发布在  Docker
关注(0)|答案(1)|浏览(308)

我有一个应用程序,现在正在Ubuntu上运行,但最终它应该可以在Raspberry Pi上运行。整个应用程序都是用docker-compose打开的。它里面有三个容器,其中一个是用Python写的Flask Api。现在我需要为我的Flask Api添加两个端点。一个用于系统关闭,一个用于系统reebot。
我想写一些python代码或者bash脚本来执行这些操作,但是这里的问题是所有的操作都在docker上运行。比如说,简单的linux命令shutdown -h now不起作用,因为docker告诉我们没有找到shutdown。有没有可能从运行在docker上的应用程序中关闭ubuntu/ raspberry pi?

gtlvzcf8

gtlvzcf81#

在基于Debian的系统上(假设你在你的raspberry pi上运行raspian),shutdownreboot只是systemctl的符号链接。
因此,您需要能够在主机上从docker中运行systemctl命令。这可以通过几个卷挂载来实现。以下是docker-compose文件的示例片段:

  1. ShutdownContainer:
  2. image: ShutdownImage:latest
  3. links:
  4. - "rebootContainer:latest"
  5. volumes:
  6. - /sys/fs/cgroup:/sys/fs/cgroup
  7. - /bin/systemctl:/bin/systemctl
  8. - /run/systemd/system:/run/systemd/system
  9. - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
  10. - /sys/fs/cgroup:/sys/fs/cgroup
  11. command:
  12. - "startYourWebserver"

Map了这些卷后,您应该能够从Docker容器中运行systemctl shutdownsystemctl reboot。可能需要以特权模式运行容器。

展开查看全部

相关问题