containerd-config.toml - configuration file for containerd
The config.toml file is a configuration file for the containerd daemon. The file must be placed at /etc/containerd/config.toml or specified with the --config option of containerd to be used by the daemon. If the file does not exist at the appropriate location or is not provided via the --config option containerd uses its default configuration settings, which can be displayed with the containerd config(1) command.
The TOML file used to configure the containerd daemon settings has a short list of global settings followed by a series of sections for specific areas of daemon configuration. There is also a section for plugins that allows each containerd plugin to have an area for plugin-specific configuration and settings.
version : The version field in the config file specifies the config’s version. If no version number is specified inside the config file then it is assumed to be a version 1 config and parsed as such. Please use version = 2 to enable version 2 config as version 1 has been deprecated.
root : The root directory for containerd metadata. (Default: “/var/lib/containerd”)
state : The state directory for containerd (Default: “/run/containerd”)
plugin_dir : The directory for dynamic plugins to be stored
[grpc] : Section for gRPC socket listener settings. Contains the following properties:
[ttrpc] : Section for TTRPC settings. Contains properties:
[debug] : Section to enable and configure a debug socket listener. Contains four properties:
[metrics] : Section to enable and configure a metrics listener. Contains two properties:
disabled_plugins : Disabled plugins are IDs of plugins to disable. Disabled plugins won't be initialized and started.
required_plugins : Required plugins are IDs of required plugins. Containerd exits if any required plugin doesn't exist or fails to be initialized or started.
[plugins] : The plugins section contains configuration options exposed from installed plugins. The following plugins are enabled by default and their settings are shown below. Plugins that are not enabled by default will provide their own configuration values documentation.
<runtime><runtime>, most important:"/usr/bin/runc"oom_score : The out of memory (OOM) score applied to the containerd daemon process (Default: 0)
[cgroup] : Section for Linux cgroup specific settings
[proxy_plugins] : Proxy plugins configures plugins which are communicated to over gRPC
timeouts : Timeouts specified as a duration
imports : Imports is a list of additional configuration files to include. This allows to split the main configuration file and keep some sections separately (for example vendors may keep a custom runtime configuration in a separate file without modifying the main config.toml). Imported files will overwrite simple fields like int or string (if not empty) and will append array and map fields. Imported files are also versioned, and the version can't be higher than the main config.
stream_processors
The following is a complete config.toml default configuration example:
version = 2 root = "/var/lib/containerd" state = "/run/containerd" oom_score = 0 imports = ["/etc/containerd/runtime_*.toml", "./debug.toml"] [grpc] address = "/run/containerd/containerd.sock" uid = 0 gid = 0 [debug] address = "/run/containerd/debug.sock" uid = 0 gid = 0 level = "info" [metrics] address = "" grpc_histogram = false [cgroup] path = "" [plugins] [plugins."io.containerd.monitor.v1.cgroups"] no_prometheus = false [plugins."io.containerd.service.v1.diff-service"] default = ["walking"] [plugins."io.containerd.gc.v1.scheduler"] pause_threshold = 0.02 deletion_threshold = 0 mutation_threshold = 100 schedule_delay = 0 startup_delay = "100ms" [plugins."io.containerd.runtime.v2.task"] platforms = ["linux/amd64"] sched_core = true [plugins."io.containerd.service.v1.tasks-service"] blockio_config_file = "" rdt_config_file = ""
The following is an example partial configuration with two runtimes:
[plugins] [plugins."io.containerd.grpc.v1.cri"] [plugins."io.containerd.grpc.v1.cri".containerd] default_runtime_name = "runc" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] privileged_without_host_devices = false runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] BinaryName = "/usr/bin/runc" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.other] privileged_without_host_devices = false runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.other.options] BinaryName = "/usr/bin/path-to-runtime"
The above creates two named runtime configurations - named runc and other - and sets the default runtime to runc. The above are used solely for runtimes invoked via CRI. To use the non-default “other” runtime in this example, a spec will include the runtime handler named “other” to specify the desire to use the named runtime config.
The CRI specification includes a runtime_handler field, which will reference the named runtime.
It is important to note the naming convention. Runtimes are under [plugins."io.containerd.grpc.v1.cri".containerd.runtimes], with each runtime given a unique name, e.g. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]. In addition, each runtime can have shim-specific options under [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.<runtime>.options], for example, [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options].
The io.containerd.runc.v2 runtime is used to run OCI-compatible runtimes on Linux, such as runc. In the example above, the runtime_type field specifies the shim to use (io.containerd.runc.v2) while the BinaryName field is a shim-specific option which specifies the path to the OCI runtime.
For the example configuration named “runc”, the shim will launch /usr/bin/runc as the OCI runtime. For the example configuration named “other”, the shim will launch /usr/bin/path-to-runtime instead.
Please file any specific issues that you encounter at https://github.com/containerd/containerd.
Phil Estes estesp@gmail.com
ctr(8), containerd-config(8), containerd(8)