crio(8)
๐ธ NAME ๐ธ
crio(8) โ from the System Manager's Manual โ is the OCI-based implementation of the Kubernetes Container Runtime Interface. Thatโs the whole name vibe, bestie: crio = OCI-based implementation of Kubernetes Container Runtime Interface. Periodt. โจ
๐ฆ SYNOPSIS ๐ฆ
Okay so the shape is literally this, no cap:
crio
[--absent-mount-sources-to-reject]=[value]
[--add-inheritable-capabilities]
[--additional-artifact-stores]=[value]
[--additional-devices]=[value]
[--allowed-devices]=[value]
[--apparmor-profile]=[value]
[--auto-reload-registries]
[--big-files-temporary-dir]=[value]
[--bind-mount-prefix]=[value]
[--blockio-config-file]=[value]
[--blockio-reload]
[--cdi-spec-dirs]=[value]
[--cgroup-manager]=[value]
[--checkpoint-restore-level]=[value]
[--clean-shutdown-file]=[value]
[--cni-config-dir]=[value]
[--cni-default-network]=[value]
[--cni-plugin-dir]=[value]
[--cni-status-grace-period]=[value]
[--collection-period]=[value]
[--config-dir|-d]=[value]
[--config|-c]=[value]
[--conmon-cgroup]=[value]
[--conmon-env]=[value]
[--conmon]=[value]
[--container-attach-socket-dir]=[value]
[--container-exits-dir]=[value]
[--ctr-stop-timeout]=[value]
[--decryption-keys-path]=[value]
[--default-capabilities]=[value]
[--default-env]=[value]
[--default-mounts-file]=[value]
[--default-runtime]=[value]
[--default-sysctls]=[value]
[--default-transport]=[value]
[--default-ulimits]=[value]
[--device-ownership-from-security-context]
[--disable-hostport-mapping]
[--drop-infra-ctr]
[--enable-criu-support]
[--enable-metrics]
[--enable-nri]
[--enable-pod-events]
[--enable-profile-unix-socket]
[--enable-tracing]
[--gid-mappings]=[value]
[--global-auth-file]=[value]
[--grpc-max-recv-msg-size]=[value]
[--grpc-max-send-msg-size]=[value]
[--help|-h]
[--hooks-dir]=[value]
[--hostnetwork-disable-selinux]
[--image-volumes]=[value]
[--imagestore]=[value]
[--included-pod-metrics]=[value]
[--infra-ctr-cpuset]=[value]
[--internal-repair]
[--internal-wipe]
[--irqbalance-config-file]=[value]
[--irqbalance-config-restore-file]=[value]
[--listen]=[value]
[--log-dir]=[value]
[--log-filter]=[value]
[--log-format]=[value]
[--log-journald]
[--log-level|-l]=[value]
[--log-size-max]=[value]
[--log]=[value]
[--metrics-cert]=[value]
[--metrics-collectors]=[value]
[--metrics-host]=[value]
[--metrics-key]=[value]
[--metrics-port]=[value]
[--metrics-socket]=[value]
[--min-injected-gomaxprocs]=[value]
[--minimum-mappable-gid]=[value]
[--minimum-mappable-uid]=[value]
[--namespaces-dir]=[value]
[--no-pivot]
[--nri-disable-connections]
[--nri-enable-default-validator]
[--nri-listen]=[value]
[--nri-plugin-config-dir]=[value]
[--nri-plugin-dir]=[value]
[--nri-plugin-registration-timeout]=[value]
[--nri-plugin-request-timeout]=[value]
[--nri-validator-reject-custom-seccomp-adjustment]
[--nri-validator-reject-namespace-adjustment]
[--nri-validator-reject-oci-hook-adjustment]
[--nri-validator-reject-runtime-default-seccomp-adjustment]
[--nri-validator-reject-unconfined-seccomp-adjustment]
[--nri-validator-required-plugins]=[value]
[--nri-validator-tolerate-missing-plugins-annotation]=[value]
[--oci-artifact-mount-support]
[--pause-command]=[value]
[--pause-image-auth-file]=[value]
[--pause-image]=[value]
[--pids-limit]=[value]
[--pinned-images]=[value]
[--pinns-path]=[value]
[--privileged-seccomp-profile]=[value]
[--profile-cpu]=[value]
[--profile-mem]=[value]
[--profile-port]=[value]
[--profile]
[--pull-progress-timeout]=[value]
[--rdt-config-file]=[value]
[--read-only]
[--root|-r]=[value]
[--runroot]=[value]
[--runtimes]=[value]
[--seccomp-profile]=[value]
[--selinux]
[--separate-pull-cgroup]=[value]
[--shared-cpuset]=[value]
[--short-name-mode]=[value]
[--signature-policy-dir]=[value]
[--signature-policy]=[value]
[--stats-collection-period]=[value]
[--storage-driver|-s]=[value]
[--storage-opt]=[value]
[--stream-address]=[value]
[--stream-enable-tls]
[--stream-idle-timeout]=[value]
[--stream-port]=[value]
[--stream-tls-ca]=[value]
[--stream-tls-cert]=[value]
[--stream-tls-key]=[value]
[--timezone|--tz]=[value]
[--tls-cipher-suites]=[value]
[--tls-min-version]=[value]
[--tracing-endpoint]=[value]
[--tracing-sampling-rate-per-million]=[value]
[--uid-mappings]=[value]
[--version-file-persist]=[value]
[--version-file]=[value]
[--version|-v]
๐ DESCRIPTION ๐
So crio is an OCI-based implementation of Kubernetes Container Runtime Interface Daemon. Itโs literally here to give you an integration path between OCI conformant runtimes and the kubelet. Specifically โ and this is the main character energy โ it implements the Kubelet Container Runtime Interface (CRI) using OCI conformant runtimes. The scope of crio is tied to the scope of the CRI. ๐ซถ
Hereโs the CRI scope checklist, bestie:
- Support multiple image formats including the existing Docker and OCI image formats.
- Support for multiple means to download images including trust & image verification.
- Container image management (managing image layers, overlay filesystems, etc).
- Container process lifecycle management.
- Monitoring and logging required to satisfy the CRI.
- Resource isolation as required by the CRI.
Usage, fr fr:
crio [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]
๐ฅ GLOBAL OPTIONS ๐ฅ
--absent-mount-sources-to-reject=""โ A list of paths that, when absent from the host, will cause a container creation to fail (as opposed to the current behavior of creating a directory). Itโs giving โstrict host path vibe check.โ ๐--add-inheritable-capabilitiesโ Add capabilities to the inheritable set, as well as the default group of permitted, bounding and effective. Capability slay. โจ--additional-artifact-stores=""โ Additional read-only OCI artifact store paths.--additional-devices=""โ Devices to add to the containers.--allowed-devices=""โ Devices a user is allowed to specify with the"devices.crio.io"allowed annotation. (default:"/dev/fuse","/dev/net/tun") ๐--apparmor-profile=""โ Name of the apparmor profile to be used as the runtimeโs default. This only takes effect if the user does not specify a profile via the Kubernetes Podโs metadata annotation. (default:"crio-default") ๐--auto-reload-registriesโ If true, CRI-O will automatically reload the mirror registry when there is an update to the'registries.conf.d'directory. Default value is set to'false'. So lowkey itโs off unless you turn it on. ๐ฆ--big-files-temporary-dir=""โ Path to the temporary directory to use for storing big files, used to store image blobs and data streams related to containers image management. Big files need a big-files temp home, periodt.--bind-mount-prefix=""โ A prefix to use for the source of the bind mounts. This option would be useful if you were running CRI-O in a container. And had/mounted on/hostin your container. Then if you ran CRI-O with the--bind-mount-prefix=/hostoption, CRI-O would add/hostto any bind mounts it is handed over CRI. If Kubernetes asked to have/var/lib/foobarbind mounted into the container, then CRI-O would bind mount/host/var/lib/foobar. Since CRI-O itself is running in a container with/or the host mounted on/host, the container would end up with/var/lib/foobarfrom the host mounted in the container rather than/var/lib/foobarfrom the CRI-O container. Thatโs the whole plot. ๐ซถ--blockio-config-file=""โ Path to the blockio class configuration file for configuring the cgroup blockio controller.--blockio-reloadโ Reloadblockio-config-fileand rescan blockio devices in the system before applying blockio parameters. Fresh scan, fresh blockio vibes. ๐ฅ--cdi-spec-dirs=""โ Directories to scan for CDI Spec files. (default:"/etc/cdi","/run/cdi") ๐--cgroup-manager=""โ cgroup manager (cgroupfsorsystemd). (default:"systemd")--checkpoint-restore-level=""โ The level of container checkpoint/restore support to enable. Must be one of"none","checkpoint_only"or"checkpoint_restore". Enabling checkpoint or restore requires that thecriubinary is available in$PATH. (default:"checkpoint_only") โญ--clean-shutdown-file=""โ Location for CRI-O to lay down the clean shutdown file. It indicates whether weโve had time to sync changes to disk before shutting down. If not found,crio wipewill clear the storage directory. (default:"/var/lib/crio/clean.shutdown") ๐ญ--cni-config-dir=""โ CNI configuration files directory. (default:"/etc/cni/net.d/")--cni-default-network=""โ Name of the default CNI network to select. If not set or"", then CRI-O will pick-up the first one found in--cni-config-dir. First found = main character network, iykyk. ๐ฆ--cni-plugin-dir=""โ CNI plugin binaries directory.--cni-status-grace-period=""โ Enable continuous CNI STATUS monitoring with the given grace period. When set to0(default), monitoring is disabled and plugin health is only determined at startup. When set to a positive duration (e.g.1m), a background goroutine polls the plugin every5sand waits for this grace period before marking the node not-ready. (default:0s) ๐ซถ--collection-period=""โ The number of seconds between collecting pod/container stats and pod sandbox metrics. If set to0, the metrics/stats are collected on-demand instead. (default:0)--config, -c=""โ Path to configuration file. (default:"/etc/crio/crio.conf") ๐--config-dir, -d=""โ Path to the configuration drop-in directory. This directory will be recursively iterated and each file gets applied to the configuration in their processing order. This means that a configuration file named00-defaulthas a lower priority than a file named01-my-overwrite. The global config file, provided via--config,-cor per default in/etc/crio/crio.conf, always has a lower priority than the files in the directory specified by--config-dir,-d. Besides that, provided command line parameters have a higher priority than any configuration file. (default:"/etc/crio/crio.conf.d") โจ--conmon=""โ Path to theconmonbinary, used for monitoring the OCI runtime. Will be searched for using$PATHif empty. This option is deprecated, and will be removed in the future. ๐จ--conmon-cgroup=""โ cgroup to be used forconmonprocess. This option is deprecated and will be removed in the future. ๐จ--conmon-env=""โ Environment variable list for theconmonprocess, used for passing necessary environment variables toconmonor the runtime. This option is deprecated and will be removed in the future. ๐จ--container-attach-socket-dir=""โ Path to directory for container attach sockets. (default:"/run/crio")--container-exits-dir=""โ Path to directory in which container exit files are written to byconmon. (default:"/run/crio/exits") ๐--ctr-stop-timeout="value" โ how many seconds we're willing to wait before we go "ok timeout bestie" on a container that's supposed to be terminating properly. The lowest possible value is 30s, and anything lower just gets ignored by CRI-O, no cap. (default:30)--decryption-keys-path="value" โ where to load the keys for decrypting images ๐. (default:"/etc/crio/keys/")--default-capabilities="value" โ the capabilities we hand to containers by default, like a lil starter pack of privileges ๐. (default:"CHOWN","DAC_OVERRIDE","FSETID","FOWNER","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","KILL")--default-env="value" โ extra environment variables set for all the containers. yes, all of them, matching outfits ๐.--default-mounts-file="value" โ path to the default mounts file.--default-runtime="value" โ the default OCI runtime, picked from the runtimes config. (default:"crun")--default-sysctls="value" โ sysctls to add to the containers.--default-transport="value" โ a prefix that gets prepended to image names that can't be pulled as-is (iykyk). (default:"docker://")--default-ulimits="value" โ ulimits applied to containers by default, inname=soft:hardform.--device-ownership-from-security-contextโ set devices' uid/gid ownership fromrunAsUser/runAsGroup. cute and consistent โจ.--disable-hostport-mappingโ if true, CRI-O disables the hostport mapping. fr, it just turns it off.--drop-infra-ctrโ decides whether pods get created without an infra container, but only when the pod isn't using a pod level PID namespace. very specific vibe check ๐.--enable-criu-supportโ enables CRIU integration, which requires thecriubinary to be available in$PATH. DEPRECATED: use thecontainer_level_enabledoption in thecrio.checkpoint_restoretable instead. When set tofalseit's translated tocontainer_level_enabled = "none".--enable-metricsโ enables the metrics endpoint for the server. numbers go brrr ๐.--enable-nriโ enables NRI (Node Resource Interface) support.--enable-pod-eventsโ if true, CRI-O starts sending the container events to the kubelet.--enable-profile-unix-socketโ enables the pprof profiler on the crio unix domain socket.--enable-tracingโ enables OpenTelemetry trace data exporting ๐ฆ.--gid-mappings="value" โ specify the GID mappings to use for the user namespace. This option is deprecated, and will be replaced with Kubernetes user namespace (KEP-127) support in the future.--global-auth-file="value" โ path to a file like/var/lib/kubelet/config.jsonholding the credentials you need for pulling images from secure registries ๐.--grpc-max-recv-msg-size="value" โ maximum grpc receive message size in bytes. (default:16777216)--grpc-max-send-msg-size="value" โ maximum grpc send message size in bytes. (default:16777216)--help,-hโ show help ๐ซถ.--hooks-dir="value" โ set the OCI hooks directory path (may be set multiple times). (default:"/usr/share/containers/oci/hooks.d")- If one of the directories does not exist, then CRI-O will automatically skip them. no drama, no error ๐ .
- Each
*.jsonfile in the path configures a hook for CRI-O containers. For more details on the syntax of the JSON files and the semantics of hook injection, seeoci-hooks(5). CRI-O currently supports both the1.0.0and0.1.0hook schemas, although the0.1.0schema is deprecated. - This option may be set multiple times; paths from later options have higher precedence (
oci-hooks(5)discusses directory precedence). - For the annotation conditions, CRI-O uses the Kubernetes annotations, which are a subset of the annotations passed to the OCI runtime. For example,
io.kubernetes.cri-o.Volumesis part of the OCI runtime configuration annotations, but it is not part of the Kubernetes annotations being matched for hooks. sneaky distinction, remember it ๐ธ. - For the bind-mount conditions, only mounts explicitly requested by Kubernetes configuration are considered. Bind mounts that CRI-O inserts by default (e.g.
/dev/shm) are not considered.
--hostnetwork-disable-selinuxโ determines whether SELinux should be disabled within a pod when it's running in the host network namespace.--image-volumes="value" โ image volume handling, and you've got exactly three choices:mkdir,bind, orignore. (default:"mkdir")mkdir: a directory is created inside the container root filesystem for the volumes.bind: a directory is created inside the container state directory and bind mounted into the container for the volumes.ignore: all volumes are just ignored and no action is taken. literally "not my problem" ๐.
--imagestore="value" โ store newly pulled images in the specified path, rather than the path provided by--root. Defaults to the value fromcontainers/storageconfiguration.--included-pod-metrics="value" โ a list of pod metrics to include. you literally just specify the names of the metrics you want in this list โจ.--infra-ctr-cpuset="value" โ CPU set to run infra containers. if you don't specify it, CRI-O will use all online CPUs to run infra containers.--internal-repairโ if true, CRI-O will check whether the container and image storage was corrupted after a sudden restart, and attempt to repair the storage if it was. self-care for your storage ๐ฉน.--internal-wipeโ whether CRI-O should wipe containers after a reboot and images after an upgrade when the server starts. If set tofalse, one must runcrio wipeto wipe the containers and images in these situations. This option is deprecated, and will be removed in the future.--irqbalance-config-file="value" โ the irqbalance service config file which is used by CRI-O. (default:"/etc/sysconfig/irqbalance")--irqbalance-config-restore-file="value" โ determines if CRI-O should attempt to restore the irqbalance config at startup with the mask in this file. Use thedisablevalue to disable the restore flow entirely. (default:"/etc/sysconfig/orig_irq_banned_cpus")--listen="value" โ path to the CRI-O socket. (default:"/run/crio/crio.sock")--log="value" โ set the log file path where internal debug information gets written.--log-dir="value" โ default log directory where all logs will go unless directly specified by the kubelet. (default:"/var/log/crio/pods")--log-filter="value" โ filter the log messages by the provided regular expression. For examplerequest.*filters all gRPC requests. so satisfying ๐.--log-format="value" โ set the format used by logs:textorjson. (default:"text")--log-journaldโ log to systemd journal (journald) in addition to the kubernetes log file. double logging, double the fun โจ.--log-level,-l="value" โ log messages above the specified level:trace,debug,info,warn,error,fatalorpanic. (default:"info")--log-size-max="value" โ maximum log size in bytes for a container. If it's positive, it must be>= 8192to match/exceed the conmon read buffer. This option is deprecated. The Kubelet flag--container-log-max-sizeshould be used instead. (default:-1)--metrics-cert="value" โ certificate for the secure metrics endpoint ๐.--metrics-collectors="value" โ the enabled metrics collectors. (default:"image_pulls_layer_size","containers_events_dropped_total","containers_oom_total","processes_defunct","operations_total","operations_latency_seconds","operations_latency_seconds_total","operations_errors_total","image_pulls_bytes_total","image_pulls_skipped_bytes_total","image_pulls_failure_total","image_pulls_success_total","image_layer_reuse_total","containers_oom_count_total","containers_seccomp_notifier_count_total","resources_stalled_at_stage","containers_stopped_monitor_count","default_runtime")--metrics-host="value" โ host for the metrics endpoint. (default:"127.0.0.1")--metrics-key="value" โ certificate key for the secure metrics endpoint ๐.--metrics-port="value" โ port for the metrics endpoint. (default:9090)--metrics-socket="value" โ socket for the metrics endpoint.--min-injected-gomaxprocs="value" โ enable GOMAXPROCS injection. Burstable pods auto-calculate from CPU request, with this value as the minimum floor. Best-effort pods use this value directly.0to disable. (default:0)--minimum-mappable-gid="value" โ specify the lowest host GID which can be specified in mappings for a pod that will be run as a UID other than0. This option is deprecated, and will be replaced with Kubernetes user namespace support (KEP-127) in the future. (default:-1)--minimum-mappable-uid="value" โ specify the lowest host UID which can be specified in mappings for a pod that will be run as a UID other than0. This option is deprecated, and will be replaced with Kubernetes user namespace support (KEP-127) in the future. (default:-1)--namespaces-dir="value" โ the directory where the state of the managed namespaces gets tracked. Only used whenmanage-ns-lifecycleistrue. (default:"/run")--no-pivotโ if true, the runtime will not usepivot_root, but instead useMS_MOVE. big switch energy ๐.--nri-disable-connectionsโ disable connections from externally started NRI plugins. sorry bestie, door's closed ๐ช.--nri-enable-default-validatorโ enable the default NRI validator plugin โจ.--nri-listen="value" โ socket to listen on for externally started NRI plugins to connect to. (default:"/run/nri/nri.sock")--nri-plugin-config-dir="value" โ directory to scan for configuration of pre-installed NRI plugins. (default:"/etc/nri/conf.d")--nri-plugin-dir="value" โ directory to scan for pre-installed NRI plugins to start automatically. (default:"/opt/nri/plugins")--nri-plugin-registration-timeout="value" โ timeout for a plugin to register itself with NRI. (default:5s)--nri-plugin-request-timeout="value" โ timeout for a plugin to handle an NRI request. (default:2s)--nri-validator-reject-custom-seccomp-adjustmentโ reject NRI plugin adjustment of custom seccomp policy. nope, not today ๐ .--nri-validator-reject-namespace-adjustmentโ reject NRI plugin adjustment of linux namespaces.--nri-validator-reject-oci-hook-adjustmentโ reject NRI plugin adjustment of OCI Hooks.--nri-validator-reject-runtime-default-seccomp-adjustmentโ reject NRI plugin adjustment of runtime default seccomp policy.--nri-validator-reject-unconfined-seccomp-adjustmentโ reject NRI plugin adjustment of unconfined seccomp policy.--nri-validator-required-plugins="value" โ list of required NRI plugins that must be present. no skips allowed ๐ซถ.--nri-validator-tolerate-missing-plugins-annotation="value" โ name of the annotation used to indicate toleration of missing required NRI plugins.--oci-artifact-mount-supportโ if true, CRI-O can mount OCI artifacts as volumes. iconic ๐.--pause-command="value" โ path to the pause executable in the pause image. (default:"/pause")--pause-image="value" โ image which contains the pause executable. (default:"registry.k8s.io/pause:3.10.2")--pause-image-auth-file="value" โ path to a config file containing credentials for--pause-image๐.--pids-limit="value" โ maximum number of processes allowed in a container. This option is deprecated. The Kubelet flag--pod-pids-limitshould be used instead. (default:-1)--pinned-images="value" โ a list of images and OCI artifacts that will be excluded from the kubelet's garbage collection. protected. untouchable. main character images ๐.--pinns-path="value" โ the path to find thepinnsbinary, which is needed to manage namespace lifecycle. Will be searched for in$PATHif empty.--privileged-seccomp-profile=""โ gives privileged containers a seccomp profile too, loaded from a local path โจ like, yes, even the privileged ones get a lil guardrail.--profileโ turns on the pprof remote profiler, listening on127.0.0.1:6060๐ฅ--profile-cpu=""โ writes a pprof CPU profile out to the path you give it.--profile-mem=""โ same energy but for a pprof memory profile ๐ drop the path, get the file.--profile-port=""โ the port the pprof profiler lives on. (default:6060)--pull-progress-timeout=""โ how long an image pull gets to make progress before the whole pull operation gets canceled ๐ญ this value is also used to compute the pull progress interval as--pull-progress-timeout / 10. Set it to0and you disable the timeout and the progress output. (default:0s)--rdt-config-file=""โ path to the RDT config file, for configuring theresctrlpseudo-filesystem ๐ง--read-onlyโ sets up all unprivileged containers to run read-only. It automatically mounts the containers' tmpfs on/run,/tmpand/var/tmp. no cap, that's the whole thing ๐--root,-r=""โ the CRI-O root directory ๐ defaults to whatever value comes from the containers/storage configuration.--runroot=""โ the CRI-O state directory. also defaults to the value from the containers/storage configuration.--runtimes=""โ OCI runtimes! the format is literally'runtime_name:runtime_path:runtime_root:runtime_type:privileged_without_host_devices:runtime_config_path:container_min_memory'โ copy it exactly bestie, it's giving colon-separated chaos ๐--seccomp-profile=""โ path to theseccomp.jsonprofile used as the runtime's default. if you don't specify one, the internal default seccomp profile gets used โจ--selinuxโ enables SELinux support. โ ๏ธ this option is deprecated, and in the future it will be interpreted from whether SELinux is enabled on the host.--separate-pull-cgroup=""โ[EXPERIMENTAL]pull in a new cgroup ๐งช--shared-cpuset=""โ the CPU set that guaranteed containers wanting access to shared CPUs will use.--short-name-mode=""โ describes the mode of short name resolution. allowed values are'enforcing'and'disabled'. (default:"enforcing")--signature-policy=""โ path to the signature policy JSON file ๐--signature-policy-dir=""โ path to the root directory for namespaced signature policies. must be an absolute path. (default:"/etc/crio/policies")--stats-collection-period=""โ how many seconds between collecting pod and container stats โฑ๏ธ if it's set to0, stats get collected on-demand instead. DEPRECATED: this option will be removed in the future. (default:0)--storage-driver,-s=""โ OCI storage driver. defaults to the value from the containers/storage configuration.--storage-opt=""โ OCI storage driver option. defaults to the value from the containers/storage configuration.--stream-address=""โ bind address for the streaming socket. (default:"127.0.0.1")--stream-enable-tlsโ enables encrypted TLS transport for the stream server ๐--stream-idle-timeout=""โ how long open streams stay open before they terminate from lack of activity ๐ค--stream-port=""โ bind port for the streaming socket. if the port is'0', CRI-O allocates a random free port number for you. (default:"0")--stream-tls-ca=""โ path to the x509 CA(s) file used to verify and authenticate client communication with the encrypted stream. this file can change, and CRI-O will automatically pick up the changes ๐--stream-tls-cert=""โ path to the x509 certificate file used to serve the encrypted stream. can change, auto-picked-up, same deal ๐ธ--stream-tls-key=""โ path to the key file used to serve the encrypted stream. also can change, also auto-picked-up ๐--timezone,--tz=""โ sets the timezone for a container in CRI-O ๐ if you pass an empty string, CRI-O retains its default behavior. use'Local'to match the timezone of the host machine.--tls-cipher-suites=""โ comma-separated list of cipher suites for TLS 1.2.--tls-min-version=""โ minimum TLS version for the streaming and metrics servers (VersionTLS12orVersionTLS13). (default:"VersionTLS12")--tracing-endpoint=""โ address the gRPC tracing collector listens on. (default:"127.0.0.1:4317")--tracing-sampling-rate-per-million=""โ how many samples to collect per million OpenTelemetry spans. set it to1000000to always sample ๐ค (default:0)--uid-mappings=""โ specify the UID mappings for the user namespace. โ ๏ธ this option is deprecated and will be replaced with Kubernetes user namespace support (KEP-127) in the future.--version,-vโ print the version ๐--version-file=""โ where CRI-O lays down the temporary version file. it's used to check ifcrio wipeshould wipe containers, which should always happen on a node reboot. (default:"/run/crio/version")--version-file-persist=""โ where CRI-O lays down the persistent version file. it's used to check ifcrio wipeshould wipe images โ which should only happen when CRI-O has been upgraded. (default:"/run/crio/version"... ok no, there's no default listed for this one, don't @ me)
๐ COMMANDS ๐
๐ฉบ check
check the CRI-O storage directory for errors ๐
this command can also repair damaged containers, images and layers โ it's not just a hater, it fixes things too ๐ซถ
by default the data integrity of the storage directory is verified, which can be an I/O and CPU-intensive operation ๐ฎโ๐จ the --quick option can be used to reduce the number of checks run.
when you're using--repair, and especially with--force, CRI-O and any currently running containers should be stopped if possible, so no concurrent access to the storage directory happens ๐ like, don't fight over the same directory bestie.
the --wipe option can be used to automatically attempt to remove containers and images on a repair failure. this option, combined with --force, can be used to entirely remove the storage directory content in case of irrecoverable errors. that is a last resort ๐ and same as --repair, it's best if CRI-O and any currently running containers are stopped.
--age,-a=""โ maximum allowed age for unreferenced layers (default:"24h")--force,-fโ remove damaged containers--quick,-qโ perform only quick checks โก--repair,-rโ remove damaged images and layers--wipe,-wโ wipe the storage directory on repair failure
๐ complete, completion
generate bash, fish or zsh completions โจ tab-completion is self care, periodt.
โ๏ธ config
outputs a commented version of the configuration file that CRI-O could use ๐ this lets you save your current configuration setup and then load it later with --config. global options will modify the output, iykyk.
--defaultโ output the default configuration (without taking into account any configuration options) ๐
๐ man
generate the man page documentation. yes, the thing you're literally reading rn ๐ญ meta.
๐ markdown, md
generate the markdown documentation.
--help,-hโ show help
๐ฌ help, h
shows a list of commands or help for one command.
๐ status
display status information.
--socket,-s=""โ absolute path to the unix socket (default:"/run/crio/crio.sock")
๐งพ config, c
show the configuration of CRI-O as a TOML string.
๐ฆ containers, container, cs, s
display detailed information about the provided container ID ๐
--id,-i=""โ the container ID
โน๏ธ info, i
retrieve generic information about CRI-O, such as the cgroup and storage driver.
๐งต goroutines, g
display the goroutine stack.
๐๏ธ heap, hp
write the heap dump to a temp file and print its location on disk ๐ซถ
--file,-f=""โ output file of the heap dump.
๐ท๏ธ version
display detailed version information.
--json,-jโ print JSON instead of text--verbose,-vโ print verbose information (for example all golang dependencies) ๐ฎโ๐จ yes, all of them.
๐งน wipe
wipe CRI-O's container and image storage.
--force,-fโ force wipe by skipping the version check
๐ฌ help, h
shows a list of commands or help for one command.
๐ FILES ๐
crio.conf(/etc/crio/crio.conf) โ cri-o configuration file for all of the available command-line options for thecrio(8)program, but in a TOML format that can be more easily modified and versioned ๐policy.json(/etc/containers/policy.json) โ signature verification policy files are used to specify policy, e.g. trusted keys, applicable when deciding whether to accept an image, or individual signatures of that image, as valid ๐registries.conf(/etc/containers/registries.conf) โ registry configuration file. specifies the registries which are consulted when completing image names that do not include a registry or domain portion ๐ธstorage.conf(/etc/containers/storage.conf) โ storage configuration file. specifies all of the available container storage options for tools using shared container storage ๐ฆ
๐ฑ ENVIRONMENT ๐ฑ
all command-line options may also be specified as environment variables. the options detailed down here, though, can only be set via environment variables ๐
KUBENSMNTโ path to a bind-mounted mount namespace that CRI-O should join before launching any containers. if the path doesn't exist, or doesn't point to a mount namespace bindmount, CRI-O will run in its parent's mount namespace and log a warning that the requested namespace was not joined โ ๏ธ
๐ SEE ALSO ๐
crio.conf(5), crio.conf.d(5), oci-hooks(5), policy.json(5), registries.conf(5), storage.conf(5)
go read those too bestie, they're the whole friend group ๐ซถ
and that's the page!! ๐ this whole thing is crio(8) โ that's your source, that's the name at the bottom of the page, and honestly the version-and-date footer energy is just me blowing you a kiss from the terminal โจ you read the entire manual, I'm so proud of you, icon behavior fr fr ๐
๐ฆ where this page comes from
- arch rolling: cri-o 1.37.2-1 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms