github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/hooks/README.md (about) 1 # OCI Hooks Configuration 2 3 For POSIX platforms, the [OCI runtime configuration][runtime-spec] supports [hooks][spec-hooks] for configuring custom actions related to the life cycle of the container. 4 The way you enable the hooks above is by editing the OCI runtime configuration before running the OCI runtime (e.g. [`runc`][runc]). 5 CRI-O and `podman create` create the OCI configuration for you, and this documentation allows developers to configure them to set their intended hooks. 6 7 One problem with hooks is that the runtime actually stalls execution of the container before running the hooks and stalls completion of the container, until all hooks complete. 8 This can cause some performance issues. 9 Also a lot of hooks just check if certain configuration is set and then exit early, without doing anything. 10 For example the [oci-systemd-hook][] only executes if the command is `init` or `systemd`, otherwise it just exits. 11 This means if we automatically enabled all hooks, every container would have to execute `oci-systemd-hook`, even if they don't run systemd inside of the container. 12 Performance would also suffer if we exectuted each hook at each stage ([pre-start][], [post-start][], and [post-stop][]). 13 14 The hooks configuration is documented in [`oci-hooks.5`](docs/oci-hooks.5.md). 15 16 [oci-systemd-hook]: https://github.com/projectatomic/oci-systemd-hook 17 [post-start]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#poststart 18 [post-stop]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#poststop 19 [pre-start]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#prestart 20 [runc]: https://github.com/opencontainers/runc 21 [runtime-spec]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/spec.md 22 [spec-hooks]: https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#posix-platform-hooks