<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-machined.service" conditional='ENABLE_MACHINED'>

  <refentryinfo>
    <title>systemd-machined.service</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-machined.service</refentrytitle>
    <manvolnum>8</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-machined.service</refname>
    <refname>systemd-machined</refname>
    <refpurpose>Virtual machine and container registration manager</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>systemd-machined.service</filename></para>
    <para><filename>/usr/lib/systemd/systemd-machined</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>systemd-machined</command> is a system service that keeps track of locally running virtual
    machines and containers.</para>

    <para><command>systemd-machined</command> is useful for registering and keeping track of both OS
    containers (containers that share the host kernel but run a full init system of their own and behave in
    most regards like a full virtual operating system rather than just one virtualized app) and full virtual
    machines (virtualized hardware running normal operating systems and possibly different kernels).</para>

    <para><command>systemd-machined</command> should <emphasis>not</emphasis> be used for registering/keeping
    track of application sandbox containers. A <emphasis>machine</emphasis> in the context of
    <command>systemd-machined</command> is supposed to be an abstract term covering both OS containers and
    full virtual machines, but not application sandboxes.</para>

    <para>Machines registered with machined are exposed in various ways in the system. For example:
    <itemizedlist>
      <listitem><para>Tools like
      <citerefentry project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>
      will show to which machine a specific process belongs in a column of
      its own, and so will
      <ulink url="https://help.gnome.org/users/gnome-system-monitor/">gnome-system-monitor</ulink> or
      <citerefentry><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
      </listitem>

      <listitem><para>systemd's various tools
      (<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>timedatectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, ...)
      support the <option>-M</option> switch to operate on local containers instead of the host system.
      </para></listitem>

      <listitem><para><command>systemctl list-machines</command> will show the system state of all local
      containers, connecting to the container's init system for that.</para></listitem>

      <listitem><para>systemctl's <option>--recursive</option> switch has the effect of not only showing the
      locally running services, but recursively showing the services of all registered containers.</para></listitem>

      <listitem><para>The <command>machinectl</command> command provides access to a number of useful
      operations on registered containers, such as introspecting them, rebooting, shutting them down, and
      getting a login prompt on them.</para></listitem>

      <listitem><para>The
      <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry> library
      exposes the
      <citerefentry><refentrytitle>sd_bus_open_system_machine</refentrytitle><manvolnum>3</manvolnum></citerefentry>
      call to connect to the system bus of any registered container.</para></listitem>

      <listitem><para>The
      <citerefentry><refentrytitle>nss-mymachines</refentrytitle><manvolnum>8</manvolnum></citerefentry>
      module makes sure all registered containers can be resolved via normal glibc
      <citerefentry project='man-pages'><refentrytitle>gethostbyname</refentrytitle><manvolnum>3</manvolnum></citerefentry>
      or
      <citerefentry project='man-pages'><refentrytitle>getaddrinfo</refentrytitle><manvolnum>3</manvolnum></citerefentry>
      calls.</para></listitem>
    </itemizedlist></para>

    <para>See
    <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    for some examples on how to run containers with OS tools.</para>

    <para>If you are interested in writing a VM or container manager that makes use of machined, please have
    look at <ulink url="https://www.freedesktop.org/wiki/Software/systemd/writing-vm-managers">Writing
    Virtual Machine or Container Managers</ulink>. Also see the <ulink
    url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group
    Interfaces</ulink>.</para>

    <para>The daemon provides both a C library interface
    (which is shared with <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>)
    as well as a D-Bus interface.
    The library interface may be used to introspect and watch the state of virtual machines/containers.
    The bus interface provides the same but in addition may also be used to register or terminate
    machines.
    For more information please consult
    <citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>org.freedesktop.machine1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>org.freedesktop.LogControl1</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>A small companion daemon
    <citerefentry><refentrytitle>systemd-importd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    is also available, which implements importing, exporting, and downloading of container and VM images.
    </para>

    <para>For each container registered with <filename>systemd-machined.service</filename> that employs user
    namespacing, users/groups are synthesized for the used UIDs/GIDs. These are made available to the system
    using the <ulink url="https://systemd.io/USER_GROUP_API">User/Group Record Lookup API via
    Varlink</ulink>, and thus may be resolved with
    <citerefentry><refentrytitle>userdbctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> or the
    usual glibc NSS calls.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>nss-mymachines</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
