Dockerized Kodi with audio and video.
- fully-functional Kodi installation in a Docker container
- audio (ALSA or PulseAudio) and video (with optional OpenGL hardware video acceleration) via x11docker
- simple, Ubuntu-based image that adheres to the official Kodi installation instructions
- clean shutdown of Kodi when its container is terminated
The host system will need the following:
Linux and Docker
This image should work on any Linux distribution with a functional Docker installation.
A connected display and speaker(s)
If you're looking for a headless Kodi installation, look elsewhere!
Ensure that the packages for an X or Wayland server are present on the Docker host. Please consult your distribution's documentation if you're not sure what to install. A display server does not need to be running ahead of time.
x11docker to start the
erichough/kodi Docker image. Detailing the myriad of
x11docker options is beyond the
scope of this document; please consult the
x11docker documentation to find
the set of options that work for your setup.
Below is an example command (split into multiple lines for clarity) that starts Kodi with a fresh X.Org X server with PulseAudio sound, hardware video acceleration, a persistent Kodi home directory, and a shared read-only Docker mount for media files:
$ x11docker --xorg \ --pulseaudio \ --gpu \ --homedir /host/path/to/kodi/home \ -- -v /host/path/to/media:/media:ro -- \ erichough/kodi
Note that the optional argument passed between a pair of
-- defines additional arguments to be passed to
You can shut down Kodi just as you normally would; i.e. by using the power menu from the Kodi home screen.
Behind the scenes, the Docker container and
x11docker processes will terminate cleanly.
You can also terminate the container from the command line.
Example systemd Service Unit
[Unit] Description=Dockerized Kodi Requires=docker.service After=network.target docker.service [Service] ExecStartPre=/usr/bin/docker pull erichough/kodi ExecStart=/usr/bin/x11docker ... erichough/kodi Restart=always KillMode=process [Install] WantedBy=multi-user.target
The advanced topics documentation describes a few more useful features and functionality: