Docker on Trizeps 8 Mini

Docker on Trizeps 8 Mini

Install Docker

Docker can be installed as described in the installation notes on docker.com.

Set up the repository

  1. update apt package index and install prerequisites

sudo apt-get update
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
  1. Add Docker's official GPG key

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  1. Add stable arm64 repository for debian10

sudo add-apt-repository \ "deb [arch=arm64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"

The docker daemon uses iptables for NAT while Debian uses nftables. Switching to iptables-legacy prevents dockerd from being unable to start

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
  1. Install Docker engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. Done - installation can be verified by running the hello world docker container:

sudo docker run hello-world

Get Docker Compose

Docker Compose allows the user to easily configure more complex docker projects containing multiple images in multiple containers with dependencies and network links set up.

Unfortunately there is no prebuilt arm64 version of Docker Compose available. The easiest way to run Docker Compose anyway is to run it in a Docker container as described here.

The docker container can be used almost like a native installation of Docker Compose after running the following two commands:

sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

With this setup docker-compose.yml-files can simply be started with the docker-compose up -d command.

Docker Compose example

This is the contents of a working docker-compose.yml file that sets up a wordpress webserver that depends on a mariadb database.

docker-compose.yml

version: '2'   services: db: image: mariadb volumes: - ./data/db/:/var/lib/mysql restart: always ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: wproot MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppass   wordpress: depends_on: - db image: wordpress:latest ports: - "8080:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppass working_dir: /var/www/html volumes: - ./data/wordpress:/var/www/html/wp-content

Create the docker-compose.yml-file and start the containers:

sudo docker-compose up

After starting the containers a WordPress website will be available at http://localhost:8080.

Portainer

Portainer simplifies finding and deleting unused images, containers, networks and volumes. It also provides a simple GUI to monitor and control docker containers, images, networks and volumes. It is also possible to set up new containers using portainer, although docker-compose is more popular and probably more versatile for that purpose.

Run Portainer in Docker:

docker volume create portainer_data
docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Alternatively a docker-compose file can be used to deploy portainer:

docker-compose.yml

version: '2'   services: portainer: image: portainer/portainer command: -H unix:///var/run/docker.sock restart: always ports: - 9000:9000 - 8000:8000 volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data   volumes: portainer_data:

The portainer UI will be available at http://localhost:9000.

Docker Links

  1. Docker Hub

  2. Docker Commands

  3. Compose file references