代码之家  ›  专栏  ›  技术社区  ›  gavenant

LXC环境变量

lxc
  •  0
  • gavenant  · 技术社区  · 6 年前

    我是lxc容器的新手,正在使用lxc v2.0。我想将设置传递给在容器中运行的进程(特别是它们的systemd服务文件的命令行参数)。

    我正在考虑通过配置文件将环境变量传递给容器 lxc.environment = ABC=DEF . (我打算使用salt stack来操作这些变量)。我需要手动解析/proc/1/environ来访问这些变量吗?还是有更好的方法让我丢失了?

    0 回复  |  直到 6 年前
        1
  •  1
  •   carlfriedrich    5 年前

    文献[1]说:

    如果要将环境变量传递到容器(即,环境变量将提供给init及其所有后代),则可以使用LxC.环境参数来执行。

    我假设,因为所有进程(包括shell)都是init进程的后代,所以环境应该在每个shell中都可用。不幸的是,这似乎不是真的。在关于linuxcontainers.org[2]的讨论中,有人说:

    不幸的是,事情并非如此。这些环境变量将传递给lxc exec的任何对象,并传递给容器的init系统。

    不幸的是,init系统通常不太关心这些环境变量,也从不将它们传播给它们的子系统,这意味着它们实际上只存在于lxc exec会话或直接查看pid 1s环境的脚本中。

    所以是的,可怕的解析 /proc/1/environ 似乎是唯一的可能。


    推荐文章