Skip to content

Docker

Running and managing containerized services with Docker Compose. Basically every service I run is a compose stack.

All servers run Docker CE 29.x with the Compose plugin (docker compose) on Debian 13, installed from Docker's apt repository. Images are pinned to version tags, Renovate proposes updates as pull requests, and a push to git redeploys the changed stacks (see GitOps).

  • Installation


    Installing Docker CE and the Compose plugin on Debian 13 from Docker's apt repo, and upgrading it by hand.

  • Post-Installation


    The fleet daemon.json (log rotation, container DNS, shutdown timeout) and why the Docker socket is root.

  • Compose Conventions


    Pinned tags + Renovate, healthchecks, depends_on conditions, autoheal, restart policies, and config -q before deploy.

  • Networks (page not written yet)


    Bridge, host, and macvlan networks. External networks for cross-stack communication.

  • Volumes (page not written yet)


    Named volumes vs bind mounts, the /opt/docker directory convention, and external volumes.

  • DNS in Containers (page not written yet)


    The dns: key in compose and resolving <YOUR_LOCAL_DOMAIN> hostnames from containers.

  • Security (page not written yet)


    Non-root users, .env file permissions, read-only mounts, and socket exposure.

  • Cheatsheet


    Command reference, update workflows, volume backups, and environment variable patterns.