]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd.nspawn.xml
Merge pull request #8676 from keszybz/drop-license-boilerplate
[thirdparty/systemd.git] / man / systemd.nspawn.xml
CommitLineData
f757855e
LP
1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4<!ENTITY % entities SYSTEM "custom-entities.ent" >
5%entities;
6]>
7
8<!--
572eb058
ZJS
9 SPDX-License-Identifier: LGPL-2.1+
10
f757855e
LP
11 This file is part of systemd.
12
13 Copyright 2015 Lennart Poettering
f757855e
LP
14-->
15
16<refentry id="systemd.nspawn">
17
18 <refentryinfo>
19 <title>systemd.nspawn</title>
20 <productname>systemd</productname>
21
22 <authorgroup>
23 <author>
24 <contrib>Developer</contrib>
25 <firstname>Lennart</firstname>
26 <surname>Poettering</surname>
27 <email>lennart@poettering.net</email>
28 </author>
29 </authorgroup>
30 </refentryinfo>
31
32 <refmeta>
33 <refentrytitle>systemd.nspawn</refentrytitle>
34 <manvolnum>5</manvolnum>
35 </refmeta>
36
37 <refnamediv>
38 <refname>systemd.nspawn</refname>
39 <refpurpose>Container settings</refpurpose>
40 </refnamediv>
41
42 <refsynopsisdiv>
43 <para><filename>/etc/systemd/nspawn/<replaceable>machine</replaceable>.nspawn</filename></para>
44 <para><filename>/run/systemd/nspawn/<replaceable>machine</replaceable>.nspawn</filename></para>
45 <para><filename>/var/lib/machines/<replaceable>machine</replaceable>.nspawn</filename></para>
46 </refsynopsisdiv>
47
48 <refsect1>
49 <title>Description</title>
50
51 <para>An nspawn container settings file (suffix
52 <filename>.nspawn</filename>) encodes additional runtime
53 information about a local container, and is searched, read and
54 used by
55 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
56 when starting a container. Files of this type are named after the
57 containers they define settings for. They are optional, and only
58 required for containers whose execution environment shall differ
59 from the defaults. Files of this type mostly contain settings that
60 may also be set on the <command>systemd-nspawn</command> command
61 line, and make it easier to persistently attach specific settings
62 to specific containers. The syntax of these files is inspired by
63 <filename>.desktop</filename> files following the <ulink
64 url="http://standards.freedesktop.org/desktop-entry-spec/latest/">XDG
a8eaaee7 65 Desktop Entry Specification</ulink>, which in turn are inspired by
f757855e
LP
66 Microsoft Windows <filename>.ini</filename> files.</para>
67
68 <para>Boolean arguments used in these settings files can be
b938cb90 69 written in various formats. For positive settings, the strings
f757855e
LP
70 <option>1</option>, <option>yes</option>, <option>true</option>
71 and <option>on</option> are equivalent. For negative settings, the
72 strings <option>0</option>, <option>no</option>,
73 <option>false</option> and <option>off</option> are
74 equivalent.</para>
75
76 <para>Empty lines and lines starting with # or ; are
77 ignored. This may be used for commenting. Lines ending
78 in a backslash are concatenated with the following
79 line while reading and the backslash is replaced by a
80 space character. This may be used to wrap long lines.</para>
81
82 </refsect1>
83
84 <refsect1>
85 <title><filename>.nspawn</filename> File Discovery</title>
86
87 <para>Files are searched by appending the
88 <filename>.nspawn</filename> suffix to the machine name of the
89 container, as specified with the <option>--machine=</option>
90 switch of <command>systemd-nspawn</command>, or derived from the
91 directory or image file name. This file is first searched in
92 <filename>/etc/systemd/nspawn/</filename> and
93 <filename>/run/systemd/nspawn/</filename>. If found in these
b938cb90 94 directories, its settings are read and all of them take full effect
4f76ef04 95 (but are possibly overridden by corresponding command line
b938cb90 96 arguments). If not found, the file will then be searched next to
f757855e 97 the image file or in the immediate parent of the root directory of
b938cb90 98 the container. If the file is found there, only a subset of the
f757855e
LP
99 settings will take effect however. All settings that possibly
100 elevate privileges or grant additional access to resources of the
101 host (such as files or directories) are ignored. To which options
102 this applies is documented below.</para>
103
a8eaaee7 104 <para>Persistent settings files created and maintained by the
f757855e
LP
105 administrator (and thus trusted) should be placed in
106 <filename>/etc/systemd/nspawn/</filename>, while automatically
107 downloaded (and thus potentially untrusted) settings files are
108 placed in <filename>/var/lib/machines/</filename> instead (next to
109 the container images), where their security impact is limited. In
110 order to add privileged settings to <filename>.nspawn</filename>
b938cb90 111 files acquired from the image vendor, it is recommended to copy the
f757855e
LP
112 settings files into <filename>/etc/systemd/nspawn/</filename> and
113 edit them there, so that the privileged options become
a8eaaee7 114 available. The precise algorithm for how the files are searched and
f757855e
LP
115 interpreted may be configured with
116 <command>systemd-nspawn</command>'s <option>--settings=</option>
117 switch, see
118 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
119 for details.</para>
120 </refsect1>
121
122 <refsect1>
123 <title>[Exec] Section Options</title>
124
125 <para>Settings files may include an <literal>[Exec]</literal>
126 section, which carries various execution parameters:</para>
127
128 <variablelist>
129
130 <varlistentry>
131 <term><varname>Boot=</varname></term>
132
7732f92b
LP
133 <listitem><para>Takes a boolean argument, which defaults to off. If enabled, <command>systemd-nspawn</command>
134 will automatically search for an <filename>init</filename> executable and invoke it. In this case, the
135 specified parameters using <varname>Parameters=</varname> are passed as additional arguments to the
136 <filename>init</filename> process. This setting corresponds to the <option>--boot</option> switch on the
137 <command>systemd-nspawn</command> command line. This option may not be combined with
b09c0bba
LP
138 <varname>ProcessTwo=yes</varname>. This option is the default if the
139 <filename>systemd-nspawn@.service</filename> template unit file is used.</para></listitem>
7732f92b
LP
140 </varlistentry>
141
142 <varlistentry>
143 <term><varname>ProcessTwo=</varname></term>
144
145 <listitem><para>Takes a boolean argument, which defaults to off. If enabled, the specified program is run as
146 PID 2. A stub init process is run as PID 1. This setting corresponds to the <option>--as-pid2</option> switch
147 on the <command>systemd-nspawn</command> command line. This option may not be combined with
148 <varname>Boot=yes</varname>.</para></listitem>
f757855e
LP
149 </varlistentry>
150
151 <varlistentry>
152 <term><varname>Parameters=</varname></term>
153
b938cb90 154 <listitem><para>Takes a space-separated list of
f757855e
LP
155 arguments. This is either a command line, beginning with the
156 binary name to execute, or – if <varname>Boot=</varname> is
157 enabled – the list of arguments to pass to the init
158 process. This setting corresponds to the command line
159 parameters passed on the <command>systemd-nspawn</command>
160 command line.</para></listitem>
161 </varlistentry>
162
163 <varlistentry>
164 <term><varname>Environment=</varname></term>
165
166 <listitem><para>Takes an environment variable assignment
167 consisting of key and value, separated by
168 <literal>=</literal>. Sets an environment variable for the
169 main process invoked in the container. This setting may be
170 used multiple times to set multiple environment variables. It
171 corresponds to the <option>--setenv=</option> command line
172 switch.</para></listitem>
173 </varlistentry>
174
175 <varlistentry>
176 <term><varname>User=</varname></term>
177
178 <listitem><para>Takes a UNIX user name. Specifies the user
179 name to invoke the main process of the container as. This user
180 must be known in the container's user database. This
181 corresponds to the <option>--user=</option> command line
5f932eb9
LP
182 switch.</para></listitem>
183 </varlistentry>
184
185 <varlistentry>
186 <term><varname>WorkingDirectory=</varname></term>
187
188 <listitem><para>Selects the working directory for the process invoked in the container. Expects an absolute
189 path in the container's file system namespace. This corresponds to the <option>--chdir=</option> command line
f757855e
LP
190 switch.</para></listitem>
191 </varlistentry>
192
b53ede69
PW
193 <varlistentry>
194 <term><varname>PivotRoot=</varname></term>
195
196 <listitem><para>Selects a directory to pivot to <filename>/</filename> inside the container when starting up.
197 Takes a single path, or a pair of two paths separated by a colon. Both paths must be absolute, and are resolved
198 in the container's file system namespace. This corresponds to the <option>--pivot-root=</option> command line
199 switch.</para></listitem>
200 </varlistentry>
201
f757855e
LP
202 <varlistentry>
203 <term><varname>Capability=</varname></term>
204 <term><varname>DropCapability=</varname></term>
205
b938cb90 206 <listitem><para>Takes a space-separated list of Linux process
f757855e 207 capabilities (see
524f3e5c 208 <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
f757855e
LP
209 for details). The <varname>Capability=</varname> setting
210 specifies additional capabilities to pass on top of the
4f76ef04 211 default set of capabilities. The
f757855e
LP
212 <varname>DropCapability=</varname> setting specifies
213 capabilities to drop from the default set. These settings
214 correspond to the <option>--capability=</option> and
215 <option>--drop-capability=</option> command line
216 switches. Note that <varname>Capability=</varname> is a
217 privileged setting, and only takes effect in
218 <filename>.nspawn</filename> files in
219 <filename>/etc/systemd/nspawn/</filename> and
220 <filename>/run/system/nspawn/</filename> (see above). On the
b938cb90 221 other hand, <varname>DropCapability=</varname> takes effect in
f757855e
LP
222 all cases.</para></listitem>
223 </varlistentry>
224
b3969f73 225 <varlistentry>
c9648aa6 226 <term><varname>KillSignal=</varname></term>
b3969f73
PA
227
228 <listitem><para>Specify the process signal to send to the
229 container's PID 1 when nspawn itself receives SIGTERM, in
230 order to trigger an orderly shutdown of the container.
231 Defaults to SIGRTMIN+3 if <option>Boot=</option> is used
232 (on systemd-compatible init systems SIGRTMIN+3 triggers an
233 orderly shutdown). For a list of valid signals, see
234 <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para></listitem>
235 </varlistentry>
236
f757855e
LP
237 <varlistentry>
238 <term><varname>Personality=</varname></term>
239
240 <listitem><para>Configures the kernel personality for the
241 container. This is equivalent to the
242 <option>--personality=</option> switch.</para></listitem>
243 </varlistentry>
244
245 <varlistentry>
246 <term><varname>MachineID=</varname></term>
247
b938cb90 248 <listitem><para>Configures the 128-bit machine ID (UUID) to pass to
f757855e
LP
249 the container. This is equivalent to the
250 <option>--uuid=</option> command line switch. This option is
251 privileged (see above). </para></listitem>
252 </varlistentry>
d2e5535f
LP
253
254 <varlistentry>
255 <term><varname>PrivateUsers=</varname></term>
256
257 <listitem><para>Configures support for usernamespacing. This is equivalent to the
258 <option>--private-users=</option> command line switch, and takes the same options. This option is privileged
b09c0bba
LP
259 (see above). This option is the default if the <filename>systemd-nspawn@.service</filename> template unit file
260 is used.</para></listitem>
d2e5535f 261 </varlistentry>
9c1e04d0
AP
262
263 <varlistentry>
264 <term><varname>NotifyReady=</varname></term>
265
960e4569 266 <listitem><para>Configures support for notifications from the container's init process. This is equivalent to
dcfaecc7 267 the <option>--notify-ready=</option> command line switch, and takes the same parameters. See
960e4569
LP
268 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> for details
269 about the specific options supported.</para></listitem>
9c1e04d0 270 </varlistentry>
960e4569
LP
271
272 <varlistentry>
273 <term><varname>SystemCallFilter=</varname></term>
274
275 <listitem><para>Configures the system call filter applied to containers. This is equivalent to the
276 <option>--system-call-filter=</option> command line switch, and takes the same list parameter. See
277 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> for
278 details.</para></listitem>
279 </varlistentry>
280
f757855e
LP
281 </variablelist>
282 </refsect1>
283
284 <refsect1>
285 <title>[Files] Section Options</title>
286
287 <para>Settings files may include a <literal>[Files]</literal>
288 section, which carries various parameters configuring the file
289 system of the container:</para>
290
291 <variablelist>
292
293 <varlistentry>
294 <term><varname>ReadOnly=</varname></term>
295
a8eaaee7 296 <listitem><para>Takes a boolean argument, which defaults to off. If
b938cb90 297 specified, the container will be run with a read-only file
f757855e
LP
298 system. This setting corresponds to the
299 <option>--read-only</option> command line
300 switch.</para></listitem>
301 </varlistentry>
302
303 <varlistentry>
304 <term><varname>Volatile=</varname></term>
305
306 <listitem><para>Takes a boolean argument, or the special value
307 <literal>state</literal>. This configures whether to run the
308 container with volatile state and/or configuration. This
309 option is equivalent to <option>--volatile=</option>, see
310 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
311 for details about the specific options
312 supported.</para></listitem>
313 </varlistentry>
314
315 <varlistentry>
316 <term><varname>Bind=</varname></term>
317 <term><varname>BindReadOnly=</varname></term>
318
319 <listitem><para>Adds a bind mount from the host into the
320 container. Takes a single path, a pair of two paths separated
321 by a colon, or a triplet of two paths plus an option string
322 separated by colons. This option may be used multiple times to
323 configure multiple bind mounts. This option is equivalent to
324 the command line switches <option>--bind=</option> and
325 <option>--bind-ro=</option>, see
326 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
327 for details about the specific options supported. This setting
328 is privileged (see above).</para></listitem>
329 </varlistentry>
330
331 <varlistentry>
332 <term><varname>TemporaryFileSystem=</varname></term>
333
334 <listitem><para>Adds a <literal>tmpfs</literal> mount to the
335 container. Takes a path or a pair of path and option string,
4f76ef04 336 separated by a colon. This option may be used multiple times to
f757855e
LP
337 configure multiple <literal>tmpfs</literal> mounts. This
338 option is equivalent to the command line switch
339 <option>--tmpfs=</option>, see
340 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
341 for details about the specific options supported. This setting
342 is privileged (see above).</para></listitem>
343 </varlistentry>
d2e5535f 344
7b4318b6
LP
345 <varlistentry>
346 <term><varname>Overlay=</varname></term>
347 <term><varname>OverlayReadOnly=</varname></term>
348
349 <listitem><para>Adds an overlay mount point. Takes a colon-separated list of paths. This option may be used
350 multiple times to configure multiple overlay mounts. This option is equivalent to the command line switches
351 <option>--overlay=</option> and <option>--overlay-ro=</option>, see
352 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> for details
353 about the specific options supported. This setting is privileged (see above).</para></listitem>
354 </varlistentry>
355
d2e5535f
LP
356 <varlistentry>
357 <term><varname>PrivateUsersChown=</varname></term>
358
359 <listitem><para>Configures whether the ownership of the files and directories in the container tree shall be
360 adjusted to the UID/GID range used, if necessary and user namespacing is enabled. This is equivalent to the
361 <option>--private-users-chown</option> command line switch. This option is privileged (see
362 above). </para></listitem>
363 </varlistentry>
364
f757855e
LP
365 </variablelist>
366 </refsect1>
367
368 <refsect1>
369 <title>[Network] Section Options</title>
370
371 <para>Settings files may include a <literal>[Network]</literal>
372 section, which carries various parameters configuring the network
373 connectivity of the container:</para>
374
375 <variablelist>
376
377 <varlistentry>
378 <term><varname>Private=</varname></term>
379
a8eaaee7 380 <listitem><para>Takes a boolean argument, which defaults to off. If
b938cb90 381 enabled, the container will run in its own network namespace
f757855e
LP
382 and not share network interfaces and configuration with the
383 host. This setting corresponds to the
384 <option>--private-network</option> command line
385 switch.</para></listitem>
386 </varlistentry>
387
388 <varlistentry>
389 <term><varname>VirtualEthernet=</varname></term>
390
b09c0bba
LP
391 <listitem><para>Takes a boolean argument. Configures whether to create a virtual Ethernet connection
392 (<literal>veth</literal>) between host and the container. This setting implies
393 <varname>Private=yes</varname>. This setting corresponds to the <option>--network-veth</option> command line
394 switch. This option is privileged (see above). This option is the default if the
395 <filename>systemd-nspawn@.service</filename> template unit file is used.</para></listitem>
f757855e
LP
396 </varlistentry>
397
f6d6bad1
LP
398 <varlistentry>
399 <term><varname>VirtualEthernetExtra=</varname></term>
400
401 <listitem><para>Takes a colon-separated pair of interface
402 names. Configures an additional virtual Ethernet connection
403 (<literal>veth</literal>) between host and the container. The
404 first specified name is the interface name on the host, the
405 second the interface name in the container. The latter may be
406 omitted in which case it is set to the same name as the host
407 side interface. This setting implies
408 <varname>Private=yes</varname>. This setting corresponds to
409 the <option>--network-veth-extra=</option> command line
410 switch, and maybe be used multiple times. It is independent of
411 <varname>VirtualEthernet=</varname>. This option is privileged
412 (see above).</para></listitem>
413 </varlistentry>
414
f757855e
LP
415 <varlistentry>
416 <term><varname>Interface=</varname></term>
417
b938cb90 418 <listitem><para>Takes a space-separated list of interfaces to
f757855e
LP
419 add to the container. This option corresponds to the
420 <option>--network-interface=</option> command line switch and
421 implies <varname>Private=yes</varname>. This option is
422 privileged (see above).</para></listitem>
423 </varlistentry>
424
425 <varlistentry>
426 <term><varname>MACVLAN=</varname></term>
427 <term><varname>IPVLAN=</varname></term>
428
b938cb90 429 <listitem><para>Takes a space-separated list of interfaces to
f757855e
LP
430 add MACLVAN or IPVLAN interfaces to, which are then added to
431 the container. These options correspond to the
432 <option>--network-macvlan=</option> and
433 <option>--network-ipvlan=</option> command line switches and
434 imply <varname>Private=yes</varname>. These options are
435 privileged (see above).</para></listitem>
436 </varlistentry>
437
438 <varlistentry>
439 <term><varname>Bridge=</varname></term>
440
441 <listitem><para>Takes an interface name. This setting implies
442 <varname>VirtualEthernet=yes</varname> and
443 <varname>Private=yes</varname> and has the effect that the
444 host side of the created virtual Ethernet link is connected to
445 the specified bridge interface. This option corresponds to the
446 <option>--network-bridge=</option> command line switch. This
447 option is privileged (see above).</para></listitem>
448 </varlistentry>
449
938d2579
LP
450 <varlistentry>
451 <term><varname>Zone=</varname></term>
452
453 <listitem><para>Takes a network zone name. This setting implies <varname>VirtualEthernet=yes</varname> and
454 <varname>Private=yes</varname> and has the effect that the host side of the created virtual Ethernet link is
455 connected to an automatically managed bridge interface named after the passed argument, prefixed with
456 <literal>vz-</literal>. This option corresponds to the <option>--network-zone=</option> command line
457 switch. This option is privileged (see above).</para></listitem>
458 </varlistentry>
459
f757855e
LP
460 <varlistentry>
461 <term><varname>Port=</varname></term>
462
463 <listitem><para>Exposes a TCP or UDP port of the container on
464 the host. This option corresponds to the
465 <option>--port=</option> command line switch, see
466 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
467 for the precise syntax of the argument this option takes. This
468 option is privileged (see above).</para></listitem>
469 </varlistentry>
470 </variablelist>
471 </refsect1>
472
473 <refsect1>
474 <title>See Also</title>
475 <para>
476 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
477 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
478 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
479 </para>
480 </refsect1>
481
482</refentry>