Files
home-lab/docker/notes.md
T

2.9 KiB

Notes

Installation

Update current list of packages:

sudo apt-get update

Install utilities (if needed):

sudo apt-get install -y ca-certificates curl gnupg

Create directory for repository keys:

sudo install -m 0755 -d /etc/apt/keyrings

Download Docker's GPG key:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

Update permissions of the keys:

sudo chmod a+r /etc/apt/keyrings/docker.asc

Define the Docker repository for our system:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update list of packages again:

sudo apt-get update

Install the following Docker components:

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Components:

  • docker-ce: Docker Community Edition aka the Docker Engine (dockerd).
  • docker-ce-cli: The CLI for Docker CE.
  • containerd.io: The low-level container runtime.
  • docker-buildx-plugin: Modern image builder tool.
  • docker-compose-plugin: To read docker-compose.yml and run multi-container apps.

Setup

Storage

All container data will be stored in /opt/appdata on the root drive (NVMe SSD) for speed. This might change later for more static content such as videos and images.

Networks

Container Management

CLI

While using the CLI through SSH is technically the lightest & simplest option for managing containers/compose files. It is certainly not the most intuitive and can feel clunky when managing containers.

Portainer / Arcane

On the complete opposite side of the spectrum, there's applications like Portainer or Arcane that include a whole host of features such as logs and metrics for containers to manage. The reason I don't like them however is that they abstract away the compose files by using internal databases and have slightly higher resource usage. While they can be an option later down the line and, while those logging & metrics features are nice, they can be replaced by other containers such as Dozzle for logs and Glances/Netdata for metrics or even Prometheus and Grafana.

Dockge

This brings us to Dockge which seems to be the good compromise with a clean GUI without abstracting anything away. Dockge still lets us edit compose files directly and have those changes directly reflected in the GUI and vice-versa. This 1:1 mirror allows us to easily ditch Dockge for something else if the need for it arises. Considering I'm still a beginner I think this transparency with compose files is ideal to learn how to configure them with the added bonus of a GUI and more enjoyable experience.

Container Updates/maintenance

Logs

System Metrics