# Every Docker container, with its own memory, CPU and ports.

Canonical page: https://vitalsmac.com/features/docker

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.

## Containers: 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

## Engines: 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: 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

## Projects: 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

## Why it matters: docker containers on a Mac

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.

## How to use it

1. **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.
2. **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.
3. **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.
4. **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.

## Compared with Activity Monitor

| | Activity Monitor | Vitals |
| --- | --- | --- |
| Containers | One process for the whole engine | Each container on its own |
| Memory | The machine's total | Per container, against its limit |
| Ports | Not shown | Published ports per container |
| Stopping | docker stop in Terminal | Stop, after a confirmation |
| Engines | One row, whichever it is | Docker Desktop, OrbStack, Colima, Lighter, Rancher Desktop, Podman |

## The words behind it

- [App Memory](https://vitalsmac.com/glossary/app-memory): App Memory is the amount of RAM being used by apps and their processes.
- [Listening port](https://vitalsmac.com/glossary/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](https://vitalsmac.com/glossary/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](https://vitalsmac.com/glossary/memory-pressure): Memory pressure is Activity Monitor's graph of how well the Mac's RAM is meeting current demand.

## Questions

### 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

- [Docker using too much memory on a Mac? How to find the container, and cap it](https://vitalsmac.com/docker-using-too-much-memory-mac)
- [How to stop Docker containers on a Mac, one or all of them](https://vitalsmac.com/stop-docker-containers-mac)
- [Vitals vs Activity Monitor](https://vitalsmac.com/vs/activity-monitor)

## More of Vitals

Every feature is at [vitalsmac.com/features](https://vitalsmac.com/features). Vitals is one payment, with every update for life: [pricing](https://vitalsmac.com/pricing).
