Every Docker container, with its own memory, CPU and ports.
On a Mac, Docker is one big process and that is all Activity Monitor can tell you. Vitals asks the engine what is inside and gives you a Containers tab: every container's memory, CPU, network and ports, in the window and the dropdown, with Stop on each.
The numbers are simulated: a web page cannot read your Mac, and should not.
Inside the one big process, container by container.
Vitals asks the engine what is running inside its virtual machine and lists each container on its own: memory against its limit, CPU, what it is sending and receiving, and the ports it publishes, so you can see which one grew and which one is busy.
- Memory against its limit
- CPU, and what it sends and receives
- The ports it publishes
- Its image, and its Compose project and service
Whichever engine you run, it just works.
Docker Desktop, OrbStack, Colima, Lighter, Rancher Desktop and Podman are all recognised, and Vitals follows whichever engine your docker command is set to use. The tab appears while an engine runs and goes away when it stops.
- Docker Desktop, OrbStack, Colima, Lighter, Rancher Desktop, Podman
- Follows whichever engine your docker command uses
- Appears while an engine is running
- Read-only, except Stop
Stop a container the way docker stop would.
Stop any container from the tab or the dropdown. Vitals asks first, gives it ten seconds to shut down cleanly before it is killed, and never starts, restarts or removes anything, so there is nothing to undo.
- In the tab and in the dropdown
- Asks first, every time
- Ten seconds to shut down, then killed
- Never starts, restarts or removes
A project's whole footprint in one row.
Containers started by docker compose from a project folder sit under that project on the Projects tab, next to its dev server and its tests, measured inside the engine's machine rather than counted twice. Quit the project and its containers stop with it.
- Compose containers under their project
- Beside the project's dev server and tests
- Measured inside the engine's machine, not on top of it
- Quit the project and stop its containers, together
Docker containers, before and after
On a Mac, Docker is one process. Every engine runs containers inside one Linux virtual machine, and macOS sees the machine, not what is inside it. Activity Monitor shows the engine at eight gigabytes and nothing more. Which container grew, which one is busy, which one holds the port: the engine knows and macOS does not.
So a Mac with a few projects' worth of containers runs short of memory, and the cause is a single row you cannot open.
Vitals asks the engine and shows a Containers tab: every container's memory against its limit, its CPU, what it sends and receives, and its ports, in the window and the dropdown, grouped by Compose project with the service name and the folder it ran from. Stop a container as docker stop would, after a confirmation; Vitals never starts, restarts or removes anything. Docker Desktop, OrbStack, Colima, Lighter, Rancher Desktop and Podman, and whichever engine your docker command is set to use.
Where it is in Vitals
The tab, the menu bar item and the setting, in the order you would reach for them.
- 01
Open the Containers tab
It appears while an engine is running, in the window and in the menu bar dropdown, and the dropdown's Overview gets a Containers tile. Containers started by docker compose are grouped by their project.
- 02
Read a container
Memory against its limit, CPU, what it is sending and receiving, the ports it publishes, its image, and the Compose service and folder it came from. Everything is measured inside the engine's virtual machine, so it is part of the engine's memory, not on top of it.
- 03
Stop one
Click Stop on the container, in the tab or in the dropdown. Vitals asks first, then stops it the way docker stop does, giving it ten seconds before it is killed.
- 04
Follow the project
On the Projects tab, the containers a project started sit under it with its dev server and the rest, so a project's whole footprint is one row.
Docker containers: Activity Monitor and Vitals
The whole comparison is row by row. These are the rows about Docker containers.
The words behind it
What the numbers mean, from the Activity Monitor glossary.
- App Memory
App Memory is the amount of RAM being used by apps and their processes.
- Listening port
A listening port is a network port where a process is waiting for incoming connections, such as a web server on port 3000.
- Helper processes
Helper processes are separate processes an app starts to do part of its work, such as rendering web pages, running extensions, or handling graphics.
- Memory pressure
Memory pressure is Activity Monitor's graph of how well the Mac's RAM is meeting current demand.
Questions
The ones people ask about Docker containers before they buy.
Which Docker engines does Vitals support?
Docker Desktop, OrbStack, Colima, Lighter, Rancher Desktop and Podman. Vitals also follows whichever engine your docker command is set to use, so an engine it has never heard of works as long as it registered a Docker context.
Why does Activity Monitor show Docker as one process?
Because on a Mac every engine runs containers inside one Linux virtual machine, and macOS sees only the machine. Only the engine knows which container inside it uses what, so Vitals asks the engine.
Can Vitals start or remove containers?
No. It is read-only, except for Stop, which it does only when you ask and after a confirmation.
When does the Containers tab appear?
While an engine is running. With no engine, there is no tab.
Are the containers in the menu bar dropdown too?
Yes. The dropdown has a Containers tab, with Stop on each container, and a Containers tile on its Overview.
Why does Docker use so much memory with nothing running?
The virtual machine keeps the memory it was given whether containers run or not. Vitals shows what is inside it; capping the machine is in Docker's own settings, and the Docker memory guide walks through it.
Does Vitals show the Compose project?
Yes. Containers started by docker compose carry their project and service name and the folder they ran from, and show under that project on the Projects tab.
Does it need the docker command installed?
No. Vitals talks to the engine directly. If the docker command is there, Vitals reads which engine it is set to use, so an engine Vitals has never heard of still works.
Read on
Guides that use this, and how Vitals compares with the apps people buy for it.
More of Vitals
All featuresVolume mixer
Turn the meeting up and the music down: a slider for every app with sound, the mic, and your Bluetooth batteries.
Temperature and fans
CPU and GPU temperature and fan speed, the apps making it hot, and a fan you can hold at a speed.
Battery
Energy by app, the apps holding sleep off and why, and the battery's health, cycles and temperature.
Get Vitals for $15 while the launch price lasts
50 left at this price. The regular price is $39. One payment, lifetime updates, 14-day refund.
Get Vitals for $15