coreelec:docker

What is docker

Users with without knowledge about docker are encouraged to search the Internet for information. Good starting points are the docker Wiki and docker docs

A docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. docker images are comparable to a portable application

Every docker container image believes it's alone in the universe, without access to the Internet, without access to CoreELEC storage, and without access to hardware. For this reason the startup parameters of the docker (container) application are very important.


docker Addons

Obtain the following from LinuxServer.io:

  • docker Add-ons Repository
  • docker
  • docker Image Updater
  • Portainer

No other docker software is to be installed at this point in time.

LinuxServer.io has the largest Open Source collection of docker images on the web.


Naming Convention

It is recommended that all docker container images needing access to storage use the following convention:

Virtual Storage Actual CoreELEC Storage
/storage /storage
/media /media
/config /storage/.config/dockers/<app_name>/config

Generally this means linking /storage/dockers to /storage/.config/dockers


docker Hub

  • The main image repository is the docker Hub. It is also a main source of container creation/execution information. Remember to filter the docker images for SoC ARM.
  • Take a little time to read through the Portainer documentation before using the service (local_ip:9000), it is a very useful tool.
  • The –privileged parameter is needed to access the hardware (example: internal or USB tuners). It can for example be used with the –restart unless-stopped. The –net=host parameter allows access to the CoreELEC network interfaces.


Examples

In this example, tvheadend uses the –net=host parameter so that it has access to the home network AND can use IPTV sources. In this case it is not necessary to publish ports. It also includes an -e RUN_OPTS parameter to access a remote SATIP tuner at another point on the planet via zerotier.

docker create \
  --name=tvheadend \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Amsterdam \
  -e RUN_OPTS="--satip_xml http://10.10.10.19:9999/desc.xml" \
  --net=host \
  -v /storage/dockers/tvheadend/config:/config \
  -v /storage/dockers/tvheadend/recordings:/recordings \
  -v /storage/dockers/tvheadend/picons:/picons \
  -v /storage:/storage \
  -v /media:/media \
  --restart unless-stopped \
  --privileged \
  linuxserver/tvheadend
docker create \
  --name=syncthing \
  -e PUID=0 \
  -e PGID=0 \
  -e TZ=Europe/Amsterdam \
  -e UMASK_SET=022 \
  -p 8384:8384 \
  -p 22000:22000 \
  -p 21027:21027/udp \
  -v /storage/dockers/syncthing/config:/config \
  -v /storage:/storage \
  -v /media:/media \
  --restart unless-stopped \
  linuxserver/syncthing
  docker create \
    --name=minisatip \
    -e PUID=0 \
    -e PGID=0 \
    -e TZ=Europe/Amsterdam \
    -e RUN_OPTS="" \
    -p 8875:8875 \
    -p 554:554 \
    -p 1900:1900/udp \
    -v /storage/dockers/minisatip/config:/config \
    --restart unless-stopped \
    --privileged \
    linuxserver/minisatip
docker run \
  --name zerotier-one \
  --device=/dev/net/tun \
  --net=host \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_ADMIN \
  --cap-add=SYS_RAWIO \
  -v /storage/dockers/zerotier-one:/var/lib/zerotier-one \
  --restart unless-stopped \
  --privileged \
  -d bltavares/zerotier

Those who have ever used zerotier are probably familiar with the zerotier-cli command. An easy way to run this command with Portainer is to go to the zerotier-one container and click “Console“, which will open the terminal.

Example:

zerotier-cli join 34b6234ad

Caution

When using scripts from the Internet automating the task of installing applications, verify them before using.

End-users have reported instances in which obsolete versions are installed without the possibility of updating.

Always use reliable repositories.


Support

Support for docker is provided by Team LinuxServer.

Support for Portainer is provided by the Portainer Community

Team CoreELEC provides no support for 3rd party applications.