gpt4 book ai didi

docker - 在 Docker 容器中启用 systemctl

转载 作者:行者123 更新时间:2023-12-04 18:39:06 26 4
gpt4 key购买 nike

我正在尝试创建自己的 docker 容器,以及为我的工作创建的自定义服务,这是我的服务文件
[1/1]/etc/systemd/system/qsinavAI.service

[Unit]
Description=uWSGI instance to serve Qsinav AI
After=network.target
[Service]
User=www-data
Group=www-data

WorkingDirectory=/root/AI/
Environment="PATH=/root/AI/bin"
ExecStart=/root/AI/bin/uwsgi --ini ai.ini
[Install]
WantedBy=multi-user.target
当我尝试运行此服务时,出现此错误

System has not been booted with systemd as init system (PID 1). Can'toperate. Failed to connect to bus: Host is down


我搜索了很多以找到解决方案,但我找不到,如何在 docker 中启用 systemctl。
这是我用来运行容器的命令
docker run -dt  -p 5000:5000 --name AIPython2 --privileged   -v /sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add SYS_ADMIN last_python_image

最佳答案

如果您的应用程序只在容器内运行,那么您应该创建一个 docker-entrypoint.sh 脚本,并在末尾添加一个“exec”,以便您的应用程序在容器中作为重新映射的 PID 1 运行。这样,云系统可以查看应用程序是否处于事件状态,并且可以发送 SIGTERM 来停止应用程序。

#! /bin/bash
cd /root/AI
PATH=/root/AI/bin
exec /root/AI/bin/uwsgi --ini ai.ini
如果您的应用程序能够在容器外的 systemd 环境中运行,那么您可以选择重用 systemd 描述符。它需要 PID 1 上的 init-daemon 和服务管理器来检查“已启用”服务。一个例子是 systemctl-docker-replacement脚本。

关于docker - 在 Docker 容器中启用 systemctl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66205286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com