]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Container interface: document exposing the host's os-release
authorLuca Boccassi <luca.boccassi@microsoft.com>
Fri, 22 May 2020 15:05:12 +0000 (16:05 +0100)
committerLuca Boccassi <luca.boccassi@microsoft.com>
Tue, 23 Jun 2020 11:57:05 +0000 (12:57 +0100)
In order to allow applications to detect the host OS version or other
metadata, ask container managers to expose the os-release files as
read-only bind mounts.
For systemd-nspawn, we will also expose ID, BUILD_ID, VERSION_ID and
VARIANT_ID as lowercase environment variables prefixed by the
container_host_ string.

docs/CONTAINER_INTERFACE.md
man/os-release.xml

index 71f9185c585408464489a6d139076ffc9006e488..a36d2edc72a7d97a1e3899f2486beb9361677fba 100644 (file)
@@ -121,6 +121,16 @@ manager, please consider supporting the following interfaces.
    `container_ttys=pts/7 pts/8 pts/14` it will spawn three additional login
    gettys on ptys 7, 8, and 14.
 
+4. To allow applications to detect the OS version and other metadata of the host
+   running the container manager, if this is considered desirable, please parse
+   the host's `/etc/os-release` and set a `$container_host_<key>=<VALUE>`
+   environment variable for the ID fields described by the [os-release
+   interface](https://www.freedesktop.org/software/systemd/man/os-release.html), eg:
+   `$container_host_id=debian`
+   `$container_host_build_id=2020-06-15`
+   `$container_host_variant_id=server`
+   `$container_host_version_id=10`
+
 ## Advanced Integration
 
 1. Consider syncing `/etc/localtime` from the host file system into the
index a2e3d0d8ac52b565062659ded9440add2a7cc4c0..675daf3ede59abd44938323606f21a9350e7f198 100644 (file)
     name in order to avoid name clashes. Applications
     reading this file must ignore unknown fields. Example:
     <literal>DEBIAN_BTS="debbugs://bugs.debian.org/"</literal></para>
+
+    <para>Container and sandbox runtime managers may make the host's
+    identification data available to applications by providing the host's
+    <filename>/etc/os-release</filename> and
+    <filename>/usr/lib/os-release</filename> as respectively
+    <filename>/run/host/etc/os-release</filename> and
+    <filename>/run/host/usr/lib/os-release</filename>.</para>
   </refsect1>
 
   <refsect1>