Dockerized Kodi with audio and video.
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
allows Docker-based applications to utilize X and/or Wayland on the host. Please follow the x11docker
installation instructions and ensure that you have a
working setup on the Docker host.
Use 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 docker run
.
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.
[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:
Something not working quite right? Are you stuck? Please ask your questions in the discussion group, where we exchange help and share ideas.
Constructive criticism and contributions are welcome! Please submit an issue or pull request.