Home Assistant projects
All projects

Docker Card

Lovelace card · Network & servers
v3.8.0 · Nov 12, 2026 HA 2024.8.0+ Marketplace

Docker hosts from Dockhand, Monitor Docker or Portainer: CPU, RAM, containers, stacks and updates.

Works with the Dockhand, Monitor Docker and Portainer integrations, with every host discovered automatically: gauges, counters, stacks with their status and containers with health, available updates, start / stop and restart.

Highlights

  • Dockhand, Monitor Docker and Portainer supported
  • Several environments supported
  • CPU, RAM and running containers gauges, with the last 24 hours of CPU and RAM behind them
  • CPU and RAM alert thresholds you can set
  • Stacks, images, volumes and networks counters
  • Stacks and containers with pending updates, and an update button with a confirmation
  • Containers list with search and a sort by name, CPU or memory
  • Compact mini card with the 24 h CPU and RAM curves
  • Each container's CPU over the last 24 hours drawn behind its row

Cards

docker-carddocker-mini-card
type: custom:docker-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-docker-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

Documentation

From the README

Features

Features

  • Two cards: a full Docker Card and a compact Docker Mini Card
  • Automatic discovery of the Dockhand environments, Monitor Docker instances and Portainer endpoints (several of each supported)
  • CPU, memory and running containers gauges, Docker version and connection type
  • CPU and RAM over the last 24 hours (recorder statistics), drawn behind the CPU and RAM gauges and, on the mini card, behind the CPU and RAM rows, on a real time axis: missing data shows as a gap; their lowest and highest values in the tooltip
  • Configurable CPU and memory alert thresholds (orange / red)
  • Stacks, images, volumes, networks and pending updates counters
  • Stacks list with status, Git badge, sync errors and available updates
  • Optional containers list with state, health, image and available updates, a search field (filters by name) and a sort by name, CPU or memory; each container's CPU over the last 24 hours drawn behind its row (with show_history)
  • Image update button on containers with an update available (Dockhand, Portainer): it asks for confirmation, then installs the update (update.install)
  • Start / stop and restart buttons for stacks and containers (with confirmation)
  • "Only items needing attention" mode: stopped, unhealthy or outdated first
  • Click any value to open its Home Assistant history (more-info dialog)
  • Detail button at the top right of the mini card: it switches to the full card and back; a click anywhere outside the card brings the compact view back
  • Visual editor in the dashboard UI for both cards (no YAML needed)
  • Light and dark mode; English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek
  • Single file, no external dependency

Supported integrations

Supported integrations

Integration What the cards show
Dockhand (Marketplace) Everything: CPU, memory and containers gauges, Docker version, stacks with Git badge, sync errors and updates, images, volumes, networks, containers, start / stop and restart
Monitor Docker (Marketplace, YAML) CPU, memory and containers gauges, Docker version, OS and architecture, images, containers with start / stop and restart; no stacks, volumes, networks nor image updates. Details in Monitor Docker
Portainer (built in, 2025.10 and later) Status, Docker version, OS and architecture, CPU, memory and containers gauges, images and updates, stacks and containers with start / stop and restart. Details in Portainer

Several environments, instances and endpoints are supported, and the sources can be mixed: each one shows in the editor's environment list.

Prerequisites

Prerequisites

Home Assistant 2024.8 or later, and one of:

Configuration

Configuration

Visual editor#

Edit a dashboard, click Add card and search for Docker Card or Docker Mini Card. The first environment is preselected; pick another one in the list if you have several, set an optional title, choose the sections to display and the language. The preview updates live, and options left at their default are kept out of the generated YAML.

Minimal#

type: custom:docker-card
type: custom:docker-mini-card

Full options#

type: custom:docker-card
environment: Docker host
title: Docker
url: http://192.168.1.10:3000
show_system: true
show_counts: true
show_stacks: true
show_containers: true
show_controls: true
only_problems: false
expand_stacks: false
expand_containers: false
cpu_warning: 70
cpu_critical: 90
ram_warning: 80
ram_critical: 95
language: fr
type: custom:docker-mini-card
environment: Docker host
title: Docker
url: http://192.168.1.10:3000
show_history: true
show_updates: true
zoom: true
language: fr

Options reference#

Option Card Default Description
environment both First environment Environment to display. Dockhand: its name (as shown in Dockhand) or its Home Assistant device id (set by the visual editor). Monitor Docker: monitor_docker.<prefix> (monitor_docker.docker for name: Docker). Portainer: the endpoint name or its device id
title both Environment name Card title
show_title both true Show the title in the header (e.g. false under a section heading of your own)
show_subtitle both true Show the subtitle under the title
url both Detected Address opened in a new tab when clicking the header icon. Defaults to the Dockhand web UI known by the integration, or dockhand.pro if none (Monitor Docker for a Monitor Docker instance). Portainer: the endpoint dashboard in Portainer
show_system full true CPU, RAM and running containers gauges (show_stats before 3.5.0, still read)
show_history both true CPU and RAM curves of the last 24 hours (0-100 % scale), from the recorder's 5-minute statistics, placed on a 24 h time axis with a gap where data is missing (shown once the statistics exist). Full card: behind the CPU and RAM gauges (needs show_system); mini card: behind the CPU and RAM rows. Not for Portainer, which has no host usage sensor
show_counts full true Stacks, images, volumes, networks and updates counters
show_stacks full true Stacks list
show_containers full false (true for Monitor Docker) Containers list
show_controls full true Start / stop, restart and image update buttons (false: the update icon only opens the update entity)
only_problems full false Only list stacks and containers that are stopped, unhealthy, out of sync or have an update
expand_stacks full false Stacks list expanded when the card loads (click the section title to fold / unfold)
expand_containers full false Containers list expanded when the card loads (click the section title to fold / unfold)
show_updates mini true Pending updates in the footer
cpu_warning / cpu_critical both 70 / 90 CPU usage (%) from which the CPU gauge or row turns orange / red
ram_warning / ram_critical both 80 / 95 RAM usage (%) from which the RAM gauge or row turns orange / red (memory_warning / memory_critical before 3.5.0, still read)
zoom mini true Detail button at the top right: switches to the full card and back (false removes it)
language both Auto Force language: en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings)

Monitor Docker

Monitor Docker

The cards also show the instances of Monitor Docker, side by side with the Dockhand environments: pick one in the editor's environment list, where it is labelled <name> (Monitor Docker).

# configuration.yaml
monitor_docker:
  - name: Docker
    switchenabled: true   # start / stop buttons (default)
    buttonenabled: true   # restart buttons
type: custom:docker-card
environment: monitor_docker.docker

What the card uses, when the condition is monitored (all of them by default):

Card Monitor Docker
CPU gauge containers_1cpu_percentage (else containers_cpu_percentage), cores from the version sensor
Memory gauge containers_memory_percentage, used memory from containers_memory, host memory from the version sensor
Containers gauge containers_running / containers_total
Images counter images
Header Docker version, OS and architecture from the version sensor
Containers list state, status, health and image of each container (or the allinone sensor), its switch and restart button

Monitor Docker has no stacks, volumes, networks nor image updates: those sections, counters and the updates footer are left out, and the containers list is shown by default. Its entities have no unique id, so the card finds them by their entity id (sensor.<prefix>_containers_total, sensor.<prefix>_<container>_state, switch.<prefix>_<container>…): keep the entity ids Monitor Docker creates. Restart buttons only exist with buttonenabled.

Portainer

Portainer

The cards also show the endpoints of the Portainer integration (Home Assistant 2025.10 and later), side by side with the other sources: pick one in the editor's environment list, where it is labelled <name> (Portainer).

type: custom:docker-card
environment: local
show_containers: true

Like for Dockhand, its entities are found through the Home Assistant registries (translation_key, endpoint → stack → container devices), whatever their entity ids or language.

Card Portainer
Header Status (online chip), Docker version, OS and architecture
CPU gauge Containers' CPU usage added up, against the host's Total CPU
Memory gauge Containers' memory usage added up, against the host's Total memory (else the largest container memory limit)
Containers gauge Containers running / Container count
Images and updates Image count; updates counted on the containers' image update entities
Stacks list Status, container count and start / stop switch
Containers list State, health, image, image update, start / stop switch and restart button

Portainer has no host usage sensor: enable the Total CPU sensor of the endpoint (disabled by default) for the CPU gauge, and Total memory for an exact memory gauge. Docker version, Operating system and Architecture (also disabled by default) fill the header. With no host usage sensor, there are no 24 h CPU and memory curves either. The CPU and memory usage sensors of the containers are diagnostic entities, enabled by default.

How it works

How it works

For Dockhand, the cards read the Home Assistant entity and device registries instead of entity ids: every entity of the Dockhand integration is matched by its translation_key (cpu_usage, containers, status, restart…) and by the device it belongs to (Environment, Container, *Stack). Entity ids can therefore be in any language or renamed without breaking the cards.

Some sensors of the integration are disabled by default (Docker version, host platform…). Enable them in Home Assistant to show them in the header.

The start / stop button uses the stack or container switch, and the restart button presses the integration's Restart button. The image update button of a container calls update.install on its update entity; it is shown when the entity has an update available and can install it, and is disabled while the update is in progress. Stopping, restarting and updating ask for confirmation.

The containers list has a search field, which filters it by name as you type, and a sort menu: by name (items needing attention first) or, when the integration provides them, by CPU or memory use, highest first, the value leading each row's detail line. CPU and memory come from Dockhand's container CPU / memory usage sensors (diagnostic), Portainer's container usage sensors or Monitor Docker's cpu and memory conditions. The search and the sort are not saved in the configuration.

Thresholds:

Value Orange Red
CPU usage 70 % 90 %
RAM usage 80 % 95 %
Containers some are not running or unhealthy —

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

3.8.0Nov 12, 2026Latest

Features

  • show_title and show_subtitle options (also in the visual editor) hide the header's title and its subtitle, separately, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).

3.7.2Nov 9, 2026

Improvements

  • The 24 h curves have a scale in their tooltip: the CPU and memory gauges, the mini card's rows and each container's row give the curve's lowest and highest values (CPU · 24 h 2% – 34%). A tap still opens the entity.

3.7.1Nov 9, 2026

Maintenance

  • No code change: released again to check the installation from the Marketplace.

3.7.0Nov 9, 2026

Features

  • Container curves: while the containers list is open, each container's CPU over the last 24 hours is drawn behind its row, from the same statistics query as the host's CPU and memory curves (its CPU sensor's 5-minute means; show_history: false turns them off with the others). The curve takes the lower half of the row, in the theme's primary color.

Maintenance

  • Styles: removed leftover rules of the former host tiles (.htile), whose dangling first line broke the rule after it.

3.6.1Nov 9, 2026

Fixes

  • Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.

3.6.0Nov 9, 2026

Performance

  • Translations load on demand: the bundle keeps English only (153 KB → 98 KB) and each other language is its own docker-card.i18n.<lang>.js file next to it, fetched the first time a card needs it. Home Assistant loads every dashboard resource on every dashboard, so each page used to download and parse all 22 languages to use one. Until a language file has arrived (a few milliseconds), texts fall back to English, and the cards redraw once it is there.

Maintenance

  • Build: scripts/i18n-split.mjs splits the built bundle and rebuilds every table from the split files to check them (the build fails on any difference); src/ keeps every language as before.
  • Release: every file of dist/ is attached. Manual installation copies the translation files too.