首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将容器中的程序作为服务启动,使用systemd-nspawn,systemd-run?

如何将容器中的程序作为服务启动,使用systemd-nspawn,systemd-run?
EN

Unix & Linux用户
提问于 2016-08-09 09:20:27
回答 1查看 2.3K关注 0票数 4

如何使用unoconv在容器中运行侦听程序(特别是作为侦听器的systemd-nspawn ),以便它可以在后台运行(没有控制台)并被其他进程访问?例如,在一个完美的世界里,它就像这样简单:

代码语言:javascript
复制
# something like this to start the container and program in background
systemd-nspawn -D <container path> --background <unoconv --listener> 

# something like this to connect to container and execute command
systemd-run --machine <machine name> <unoconv -f pdf file.txt>

到目前为止,我所掌握的最深入的方法是使用驯服系统。用于运行容器的n个种子,它使容器在后台使用machinectl运行。然而,

代码语言:javascript
复制
sudo systemd-run --machine <machine name> ls

错误失败:

代码语言:javascript
复制
Failed to create bus connection: Permission denied.

我的问题是双重的。第一,你能解决这个错误吗?或者两种(最好),你能给我一个更简单的方法来启动和连接到一个容器和运行命令吗?

(我正在一台没有互联网接入的安全机器上运行Ubuntu )

EN

回答 1

Unix & Linux用户

发布于 2016-08-11 22:27:12

我认为这取决于您想要运行容器的频率和时间。

如果这是您希望在Ubuntu加载后立即运行的东西,每次计算机启动时,我建议您尝试启动应用程序设置。您可以添加任何作为启动“应用程序”进程的终端命令。或者,您可以将脚本放在一起,然后将脚本作为启动过程运行,这将为您提供更好的控制。(请记住,Startup列表中的项是按照名称字段按字母顺序执行的,所以如果执行顺序很重要,那么要么相应地命名它,要么只命名创建一个启动脚本并使其成为唯一的调用。)

如果您想在特定的重新发生时间/日期运行程序,我建议将cron作业放在一起来做同样的事情。

如果你想按需运行它..。对此不太确定。我不太熟悉系统的名称;也许这篇文章这篇文章会有所帮助。

关于第一个问题,我很困惑。打错机器的名字,也许?容器OS权限与系统运行身份验证选项之间的不匹配?你可以试试sshd码头集装箱 (如果没有其他操作).

当然,如果您实际上是像"--machine <machine name>“那样键入它,那么将其更改为"--machine=<machine name>”可能只是修复它。:P

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/302239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档