How to check Docker CPU/RAM/Disk Usage on OSX

Published on Apr 3, 2020

Intro

Docker has become an indispensable tool in the contemporary development workflow. As trends in software development shift increasingly towards cloud infrastructure and microservices, Docker containers offer many advantages in terms of compatibility, rapid deployment, and productivity. When developing locally on OSX it can be challenging to get a clear picture of Docker’s resource consumption. In this article, you will learn how to get a clear picture of how to check Docker’s CPU, RAM, and Disk usage on your Mac and how to optimize performance for local development.

Docker, Mac, and Hyperkit

Docker on Mac has an unusual architecture which makes it difficult to get a clear picture of resource consumption. Docker relies on features unique to the Linux kernel like cgroups to implement containers and as a result, requires Linux to run. Because OSX is not Linux, Docker utilizes a large Linux VM, called hyperkit to run your containers.

As a result of this architecture, running docker stats doesn’t tell you everything you need to know about resource consumption. You’ll get information about the footprint of your Docker containers, but not about hyperkit, the VM needed to run those containers. As we will see, hyperkit can be quite a resource hog, tending to eat more and more memory the longer it runs and the more containers you put on it.

Activity Monitor

On a Mac, to get a picture of Docker’s total resource consumption, including hyperkit, first launch the Activity Monitor application and search for Docker.

To check CPU, select the CPU tab.

CPU tab

Sorting by %CPU, here you can see com.docker.hyperkit is using 193.2%

To see RAM usage, simply select the Memory Tab within Activity Monitor.

Memory tab

Here you can see the memory footprint of Docker. Notice hyperkit is once again at the top of the list!

When it comes to disk space, Activity Monitor doesn’t give as much insight as Docker, itself. You can access information about Docker’s total disk usage on your machine by running docker system df.

$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              29                  7                   4.722GB             4.195GB (88%)
Containers          15                  0                   17MB                17MB (100%)
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

How has Docker impacted your development experience?

We’re working on reducing Docker’s resource usage.

Fill out this 5-min survey to help us improve the Docker experience. No matter your background, we appreciate your help, and you might get a $150 Amazon gift card as thanks.

Take the Survey!

What to do if Docker is Running Slowly

Clear Unused Resources

There are some cleanup tasks you can run to optimize performance. Try running docker system prune to clean quite a bit of the RAM, CPU, and disk consumed by Docker. Pruning can help quite a bit, but doesn’t release memory consumed by hyperkit and therefore isn’t enough in many cases.

Limit Docker Desktop

Docker desktop allows you to change the limits of hyperkit’s RAM/CPU/disk consumption. To access it find the docker preferences in the menu bar:

Docker Preferences

And navigate to the Resources tab:

Resources tab

Of course, you can also choose to close docker desktop when you’re not using it, freeing up resources.

Run Docker in the Cloud

Docker Machine

Docker Machine lets you run Docker Engine on virtual hosts, either VMs on your local system or cloud providers. While Docker Machine can free up resources on your local machine, the configuration process isn’t exactly intuitive. Using Docker Machine also requires some changes to your workflow. However, you can learn to use it with some effort.

Blimp

Blimp runs your existing local docker-compose.yml configuration in the Blimp Cloud without additional setup or changes to your workflow. Blimp is a drop-in SaaS replacement for Docker Compose that lets you continue to develop locally while outsourcing performance demands securely to remote hosts.

Resources

Try an example with Blimp, which ships your heavy containers into the cloud.

Read about how to speed up your Docker development with Node.js or Python.

Read some about some common Docker Compose mistakes that are slowing down your development productivity.

Related Article

5 Common Docker Compose Mistakes

Read Now →