---
author: Franck Nijhof
authorURL: https://twitter.com/frenck
authorImageURL: /img/profile/frenck.png
authorTwitter: frenck
title: S6 Overlay for our Docker containers
---

Home Assistant uses a lot of different Docker containers for all kinds of
purposes. Not only the Home Assistant Core that is available as Docker
containers but also our Supervisor and all add-ons are leveraging Docker.

In many situations, we need to run multiple processes in our containers,
that all need to be managed. We used to do this using simple Bash scripting,
but quickly learned we need a proper process manager to handle this.

We decided to use the [S6 Overlay init system][s6-overlay], which is based on
the excellent [S6][s6] toolset that provides process supervision and
management, logging, and system initialization.

The S6 Overlay has been added to our [Docker base images][base-imags],
which is used by every Docker image Home Assistant ships.

All containers have been updated, and changes are automatically handled by the
Home Assistant Supervisor; For Home Assistant users, there is no noticeable
impact.

For users of the Home Assistant Core containers on Docker, this might impact
the way you run or start the container. If you run your Home Assistant Core
container with an override of the Docker entry point or command, you need to
adapt those. For example, some container management systems, like Portainer
and Synology, automatically override those for you so you are impacted.

In those cases:

- The entry point has changed to: `/init`
- The command (CMD) has changed to: ` ` _(Empty/not set)_

If you override the command endpoint to start Home Assistant, the init system
in the entry point will still be active in the background and a second launch
Home Assistant. This can lead to unexpected behavior.

[base-imags]: https://github.com/home-assistant/docker-base
[s6-overlay]: https://github.com/just-containers/s6-overlay
[s6]: http://skarnet.org/software/s6/
