Skip to main content
PathMon

Chapter 13 of 26

Docker Inventory Tour

Updated Read the full guide

Overview

Once the Docker integration is enabled on one or more hosts, PatchMon aggregates the discovered containers, images, volumes, and networks into a fleet-wide Docker Inventory. The inventory answers "what's running where" questions: which hosts have Docker, which containers are running, which images are out of date, and which volumes and networks exist across the estate.

This page is a guided tour of /docker (the fleet view), /docker/hosts/:id (per-host view), and the detail pages for containers, images, volumes, and networks.

Module required: docker. Plans without the module show a tier-badge prompt on the Docker tab and the /docker routes. Contact your PatchMon administrator to enable it.

Permission required: can_view_hosts to view the inventory; can_manage_hosts to delete Docker resources from the UI.

Getting to the Docker Page

Click Docker in the left navigation. You land on /docker with Stacks selected by default. The URL accepts a ?tab= parameter (stacks, containers, images, volumes, networks, hosts) so you can deep-link to a specific tab.

If no hosts have the Docker integration enabled, the list sections are empty. See Enabling Docker Integration to turn it on for a host.

Top-of-Page Statistics

Four summary cards sit above the tabs:

Card Meaning Click behaviour
Hosts with Docker Hosts actively reporting Docker inventory
Running Containers running / total counts across the fleet
Total Images Distinct images reported across all hosts
Updates Available Images PatchMon knows have newer tags in their registry Opens the Images tab filtered to Updates available

These figures come from the /docker/dashboard endpoint and are refreshed every 30 seconds automatically while the page is open.

Tab Strip

Six tabs. Each has a counter badge to show at a glance how big the fleet is across that dimension:

  • Stacks: containers grouped by their Compose project / stack label.
  • Containers: every container on every host.
  • Images: every image on every host.
  • Volumes: every volume on every host.
  • Networks: every network on every host.
  • Hosts: a directory of hosts with Docker enabled.

Clicking a tab resets the page's search field and sets a sensible default sort for that view (status on containers, repository on images, name elsewhere).

Stacks tab

Groups running containers by their Compose project / stack label. Each group card shows:

  • Stack name.
  • Number of containers in the stack, broken down by status.
  • Host the stack runs on (stacks are scoped per host; a stack of the same name on two hosts appears twice).
  • Links to the individual containers and their images.

Use this tab when you think in terms of "my wordpress stack" rather than "individual containers".

Containers tab

One row per container. Columns include:

  • Name: click to open the container detail page (/docker/containers/:id).
  • Image: the image tag, with registry-aware linking (click a Docker Hub image to jump to Docker Hub, GHCR to GitHub, etc.).
  • Status: colour-coded badge: running (green), exited (red), paused (yellow), restarting (blue), or plain for other states.
  • Host: friendly name of the host the container lives on. Click to jump to the per-host Docker view.
  • Optional columns: created timestamp, ports, state transitions.

Filters:

  • Search across name, image, and host.
  • Status filter: All, Running, Exited, Paused, Restarting.
  • Sort by name, image, status (with secondary sort by name within status), or host.

Actions:

  • Delete (trash icon): deletes the container via the agent. Requires can_manage_hosts. Errors are surfaced in an alert.

Images tab

One row per image. Rows show:

  • Repository + tag (and registry link when recognised).
  • Size.
  • Source (Docker Hub, GHCR, GitLab, Quay, ECR, ACR, GCR, local, private, unknown) as a coloured badge.
  • Container count: how many containers on which hosts reference this image.
  • Update indicator: a chip when a newer tag is available in the registry.

Filters include source type and an Updates available filter (the same filter the top Updates Available card opens).

Clicking an image opens /docker/images/:id: the image detail page with a list of the hosts that have the image and the containers using it.

Volumes tab

One row per volume with:

  • Name, driver (local, nfs, custom).
  • Mountpoint on the host.
  • Host the volume lives on.
  • Container count: how many containers mount it.

Filter by Driver and search. Click a volume name to open /docker/volumes/:id, which shows which containers currently mount it, along with the host.

Networks tab

One row per network with:

  • Name, driver (bridge, host, overlay, macvlan, none, custom), scope.
  • IPAM subnet / gateway.
  • Host the network exists on.
  • Container count.

Filter by Driver and search. Click a network name to open /docker/networks/:id with container membership.

Hosts tab

A compact directory of hosts that have the Docker integration enabled, sorted alphabetically by friendly name. Each row summarises container / image counts for that host and links to the per-host Docker view at /docker/hosts/:id.

Use this tab as the starting point when you want to focus on a single host rather than pivot by resource type.

Per-Host Docker View

The URL /docker/hosts/:id (and the row link on the Hosts tab) opens a view scoped to one host. It shows:

  • The host's friendly name, hostname, and a link back to the main Host Detail page.
  • Container and image counts, running / exited / paused breakdowns.
  • The host's container list, grouped by stack where available.
  • The host's image list.

This view is equivalent to the Docker tab on the host's main Host Detail page (see Host Detail Page). Either works. Pick whichever route you land on.

Resource Detail Pages

Each Docker resource has its own detail page. They follow the same pattern: top section with identifying metadata, cards with stats, related resources, and any actions.

Container detail: /docker/containers/:id

Shows the container's name, image, status, ports, host, created and started timestamps, restart policy, command and entrypoint, labels, mounts, and networks.

A Similar containers strip at the bottom lists other containers using the same image across the fleet, useful for "is this redis:7 running anywhere else?" questions.

Image detail: /docker/images/:id

Shows repository, tag, digest, size, architecture, OS, labels, history (layers), and the registry link.

Below, two lists:

  • Hosts with this image: every host pulling it, with the tag they currently have.
  • Containers using this image: every container across the fleet referencing this image.

An Updates panel appears when a newer tag is available in the source registry.

Volume detail: /docker/volumes/:id

Shows driver, mountpoint, size (when Docker reports it), labels, and options. The Containers using this volume list shows where it is mounted.

Network detail: /docker/networks/:id

Shows driver, scope, IPAM configuration, and options. The Containers attached list shows what's connected to the network.

How the Data Stays Current

Docker data flows into PatchMon on two channels:

Periodic inventory reports

Every time the agent runs its regular report cycle (default: 60 minutes, configurable server-side), it enumerates containers, images, volumes, and networks and sends the snapshot to the server. The full inventory in /docker reflects the last snapshot from each host.

To force an immediate refresh for a single host, open its Host Detail page and click Fetch Report.

Real-time container events

When the Docker integration is enabled, the agent also subscribes to the Docker event stream and pushes container lifecycle events over its existing WebSocket connection. The relevant event types are:

  • container_start (maps to running)
  • container_stop / container_die / container_kill (all map to exited)
  • container_pause (paused)
  • container_unpause (running)
  • container_destroy (removed)

The server records these events against the container record so that, for example, a container crash is visible in the UI within seconds rather than waiting for the next full report.

UI refresh cadence

On top of those agent-driven pushes, the /docker page itself refreshes the dashboard summary every 30 seconds via polling, and per-tab queries refetch when you switch tabs. The manual Refresh button (top right, circular arrow) forces an immediate refetch of whichever tab is active.

Tip: If you change something on a host (start / stop a container, pull an image) and want to see it in the UI, the event should appear within a few seconds via the WebSocket push. A full refresh of image / volume / network inventory waits for the next report. Use Fetch Report on the Host Detail page if you can't wait.

Deleting Docker Resources

Containers, images, volumes, and networks can be deleted from their table rows (trash icon) or from their detail pages. Deletion:

  • Requires can_manage_hosts.
  • Opens a confirmation modal listing the resource and its host.
  • Sends a delete command to the agent over the WebSocket.
  • The agent executes the equivalent docker rm / docker rmi / docker volume rm / docker network rm and reports the outcome back.

If Docker refuses (for example because a container is still running, or an image is still referenced by a container), the UI surfaces the error inline.

Search and Sort Persistence

Search and filter state are per-tab and reset when you switch tabs (so switching from Containers to Images doesn't carry a container-specific filter into the Images view). Sort field and direction reset to the tab's default when you switch, too.

The main Refresh button also clears any per-tab "updates available" filter that was set via the dashboard card click.

  • Enabling Docker Integration: how to switch the integration on for a host.
  • Host Detail Page: the per-host Docker tab, equivalent to /docker/hosts/:id.
  • Managing the PatchMon Agent: the agent that collects the Docker data.
  • Agent Config YML Reference: the integrations.docker setting in config.yml.