Set up config like memory limits in Docker for Windows and WSL2

Photo by Ian Taylor on Unsplash

If you are starting to learn about setting up a system environment using Docker, then you definitely want to make sure it uses the right amount of memory and processing power.

After installing Docker in Windows, you might think that changing these settings would be as easy as changing configurations in VirtualBox (via UI).

Well, not quite.

Unlike Linux and Mac, we cannot directly change the configuration via Docker’s UI.

The latest release of Docker for Windows requires that we install the Windows Subsystem for Linux version 2 (WSL2) that allows you to configure global options that will be used by all WSL2 Linux distributions installed in Windows 10.

And to change the setting for Docker means that we need to create a .wslconfig file. Note that there are two types of config files that we can create. The .wslconfig file would let us create a global configuration. The other one, wsl.conf allows us to configure settings per -distribution for Linux distros in our machine. You can learn more about it here.

  1. Make sure you shut down Docker and any other instances of wsl2. You can do this by going to a command prompt and type the command wsl — shutdown.
  2. To create a .wslconfig file, simply open your File Explorer, and type and enter %UserProfile% to go to your profile directory in Windows.
  3. Docker or WSL2 by default does not create these config files so we should do it ourselves. Create a new file called .wslconfig (make sure there are no .txt at the end)
Image by Author

4. Add the (either all or some of the) following commands in that file to configure docker

# Settings apply across all Linux distros running on WSL 2
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
# Sets the VM to use two virtual processors
# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at
# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
# Turn off default connection to bind WSL 2 localhost to Windows localhost
# Disables nested virtualization
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging

You can configure it however you want depending on your system’s need and available resources.

Once those are done, you can start your Docker and continue development.

Hope this is helpful in your journey to learn about Docker. Let me know if you have questions by replying to this post






Love anything data-related (especially programming), travel, movies, and gaming.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Biblioteca Walkthrough:THM

‘Airbyte is in the air’ — data ingestion with Airbyte

How Efficient PHP Compared to Python (Django)?

Chapter #6:Azure Service Fabric, One Cluster to Rule Them All

Who wants an OIDC CLI?

What are the 4 pillars of Object-Oriented Programming Language?


Most common AWS Lambda issues and how to fix them

MetaProgramming A Graph Class In Julia

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
M. Rake Linggar A.

M. Rake Linggar A.

Love anything data-related (especially programming), travel, movies, and gaming.

More from Medium

What is Docker ??

Finding Curve Inflection Points in PostGIS

Demystifying Docker

HowTo: Building a Windows 2019 Docker Image with SQL Server 2019