是否可以告诉应用程序在启动时在网络命名空间中启动,而不是正常启动?我在 Ubuntu 14.04 LTS 上运行 transmission-daemon。它在启动时启动,这很好,我只需要它在命名空间中启动。我的命名空间是使用 /etc/network/interfaces 文件中的 pre-up 创建的。似乎最有效的方法是改变已经使服务在启动时启动的内容,但我可能是错的。
答案1
“开机启动”部分:
编写 Upstart 服务配置并将其放入/etc/init
。食谱有示例。或者,修改现有的示例transmission.conf
(如果有)。
对于未来的 Ubuntu 版本(15.04 及更高版本),您将需要使用 systemd。编写一个transmission.service
并将其放入/etc/systemd/system
。
“…在 netns 中”部分:
检查新贵食谱,没有相关设置(除了简单的 chroot)。大多数现有的 Upstart init 脚本确实仍然依赖外部工具来完成此类任务,所以ip netns
没问题。
目前 systemd 也面临同样的问题。加入命名空间=,您只能指定另一个服务单元,而不能指定命名的命名空间。