Nspawn Driver
Name: nspawn
The nspawn
driver provides an interface for using Systemd-Nspawn for running application
containers. You can download the external Systemd-Nspawn driver here. For more detailed instructions on how to set up and use this driver, please refer to the guide.
Task Configuration
The nspawn
driver supports the following configuration in the job spec:
boot
- (Optional)true
(default) orfalse
. Search for an init program and invoke it as PID 1. Arguments specified incommand
will be used as arguments for the init program.ephemeral
- (Optional)true
orfalse
(default). Make an ephemeral copy of the image before staring the container.process_two
- (Optional)true
orfalse
(default). Start the command specified withcommand
as PID 2, using a minimal stub init as PID 1.read_only
- (Optional)true
orfalse
(default). Mount the used image as read only.user_namespacing
- (Optional)true
(default) orfalse
. Enable user namespacing features inside the container.command
- (Optional) A list of strings to pass as the used command to the container.console
- (Optional) Configures how to set up standard input, output and error output for the container.image
- Path to the image to be used in the container. This can either be a directory or the path to a file system image or block device. Can be specified as a relative path from the configured Nomad plugin directory. This option is mandatory.pivot_root
- (Optional) Pivot the specified directory to the be containers root directory.resolv_conf
- (Optional) Configure how/etc/resolv.conf
is handled inside the container.user
- (Optional) Change to the specified user in the containers user database.volatile
- (Optional) Boot the container in volatile mode.working_directory
- (Optional) Set the working directory inside the container.bind
- (Optional) Files or directories to bind mount inside the container.bind_read_only
- (Optional) Files or directories to bind mount read only inside the container.environment
- (Optional) Environment variables to pass to the init process in the container.port_map
- (Optional) A key-value map of port labels. Works the same way as in the docker driver. Note:systemd-nspawn
will not expose ports to the loopback interface of your host.
Networking
Currently the nspawn
driver only supports host networking.
Client Requirements
The nspawn
driver requires the following:
- 64-bit Linux host
- The
linux_amd64
Nomad binary - The Nspawn driver binary placed in the plugin_dir directory.
systemd-nspawn
to be installed- Nomad running with root privileges
Plugin Options
enabled
- Thenspawn
driver may be disabled on hosts by setting this option tofalse
(defaults totrue
).
An example of using these plugin options with the new plugin syntax is shown below:
Client Attributes
The nspawn
driver will set the following client attributes:
driver.nspawn
- Set totrue
if Systemd-Nspawn is found and enabled on the host node and Nomad is running with root privileges.driver.nspawn.version
- Version ofsystemd-nspawn
e.g.:244
.