h1. Container @init@ process To enable running multiple processes, containers require process/service management. This is normally provided by some kind of @init@ task (e.g. provided by @sysvinit@). There are Docker-compatible replacements for full-fledged @init@s. Unfortunately they require either custom init scripts or service configurations. The process of migration from system provided OpenRC init scripts is time consuming and error prone. Usage of system's default @sysvinit@ is hampered by following shortcomings: * it mostly does not respond to Unix signals, which are used by Docker to manage containers (most importantly: signal termination), * it does not stop properly on container stop. Attempt to stop container with @init@ as PID 1 ends with error code 137:
CONTAINER ID  IMAGE                 COMMAND       CREATED             STATUS                      PORTS  NAMES
b755c0f1b1d8  gentoo-base:20220415  "/sbin/init"  About a minute ago  Exited (137) 9 seconds ago         gentoo-base
@init@ process remains running afterwards:
# docker-compose top
gentoo-base
UID    PID    PPID   C   STIME   TTY     TIME       CMD
----------------------------------------------------------
root   3510   3489   0   17:40   ?     00:00:00   init [0]
Nevertheless it is possible to use @sysvinit@ as a Docker container @init@ process. Required steps are following: