Docker System has not been booted with systemd as init system

Abdol Seed picture Abdol Seed · Dec 24, 2019 · Viewed 22.5k times · Source

I have an Ubuntu 18.04 image runing on my docker container. I login into it and installed Openresty. also installed systemd. When I use command "systemctl" I get this error:

System has not been booted with systemd as init system (PID 1). Can't operate.

How can I fix it?

Answer

Javier Gonzalez picture Javier Gonzalez · Jun 20, 2020

If I understand the OP, he is trying to run systemctl within the container. This does not work because systemd is not running within the container to begin with. It cannot be done in unprivileged containers. There is another question here in SO about why he should not run systemd within a container.

I quickly googled and found this 2014 page about using systemd within a container in docker, where there is a short explanation. The fix is to use a privileged container (running docker run --privileged ...), which is arguably a bad idea but might suit the OP. There is a 2019 update of that last article, and the bottomline is they developed their own container engine (so no docker).

The obvious solution would be to have a single service, so no need for systemd, although that might not be possible in the OP's case.

In summary, possible solutions:

  • not to use systemd
  • use a privileged container
  • not to use docker