【问题标题】:Nixos container with custom user systemd unit具有自定义用户 systemd 单元的 Nixos 容器
【发布时间】:2021-03-07 04:46:51
【问题描述】:

我定义了以下容器:

  containers.abc123 = {
    config = { config, pkgs, ... }:
    {
      systemd.user.services = {
        finder = {
          description = "finder";
          enable = true;
          serviceConfig = {
            Type      = "simple";
            ExecStart = "${pkgs.coreutils}/bin/mkdir /tmp/hello";
            Restart   = "always";
            RestartSec   = 50;
          };
          wantedBy = [ "default.target" ];
        };
      };
    };
  };

本质上是一个测试finder 服务定义。但是,根据以下输出,这似乎不起作用:

sudo nixos-container run abc123 -- systemctl status finder
Unit finder.service could not be found.
sudo nixos-container run abc123 -- systemctl status --user finder
Failed to connect to bus: No such file or directory

我想也许这些“用户”服务不是为 root 用户运行的。但是添加用户并登录后,仍然没有变化。

sudo nixos-container root-login abc123

[root@abc123:~]# systemctl status --user finder
Failed to connect to bus: No such file or directory

[root@abc123:~]# su test123

[test123@abc123:/root]$ systemctl status --user finder
Failed to connect to bus: No such file or directory

[test123@abc123:/root]$ systemctl status finder
Unit finder.service could not be found.

为什么这项服务不起作用? nixos容器不支持吗?

【问题讨论】:

  • 克里斯,Hensing 的评论已移至答案 - 你说它对你有用,如果你仍然认为它有效,请考虑接受他的答案。

标签: nix nixos


【解决方案1】:

nixos-container root-login 为您提供了一个外壳; nsenter and su

命令nixos-container login 应该可以工作。这得到了machinectl login 的支持,它可以正确设置,所以systemctl 可以完成它的工作。

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多