Folks, I have a node.js script running on my Windows machine that uses the dockerode npm package to talk to docker on said box and starts and kills docker containers.
However, after the containers have been killed off, docker still holds on to the memory that it blocked for those containers and this means downstream processes fail due to lack of RAM.
To counter this, I have powershell scripts to start docker desktop and to kill docker desktop.
All of this is a horrid experience.
On my Mac, I just use Colima with Portainer and couldn’t be happier.
I’ve explored some options to replace Docker Desktop and it seems Rancher Desktop is a drop-in replacement for Docker Desktop, including the docker remote API.
- Is this true? Is Rancher Desktop that good of a drop-in replacement?
- Does Rancher Desktop better manage RAM for containers that have been killed off? Or does it do the same thing as Docker Desktop and hold on to the RAM?
Are there other options which I’m not thinking of which might solve my problems? I’ve seen a few alternatives but haven’t tried them yet -
moby,
containerd,
podman
I don’t actually need the Docker Desktop interface. So pure CLI docker would also just work. How are you all running pure docker on Windows boxes?
I despise Docker Desktop. Before I knew anything about docker or containers, all I knew was that it was in the required software list for my work for building our software. All I knew was that if it wasn’t open, my build would fail and if it was open, my laptop would slow down to a crawl.
Eventually I took classes on Docker for work and learned quite a bit about it. I learned that I could use docker from command line with no UI, and I wouldn’t take anywhere near the performance hit. I eventually linked my IDE docker runtime to podman running on WSL2. Now I take pretty much no noticable performance hit.
TL;DR: you can replace Docker Desktop with WSL2 command line commands and have no UI.
The integration of Docker for windows with wsl2 is an abomination that breaks just about every time I update either ddw or windows. Also the fact that it is tied to my user account ( both ddw and wsl2) means that it is not a great choice for persistent services. I still use it to provide monitoring agents for Prometheus and portainer, but otherwise everything runs on Linux vms on my homelab xenserver cluster.
It is possible to install docker without ddw. It’s documented for server versions of windows, but is basically only for running windows containers. The only use case for that is windows build agents as far as I can tell.
Docker can be installed standalone on wsl2 and would be more reliable.
thanks for that :)
BTW, if I fire up a bunch of docker containers in WSL2 using podman or native docker, and then kill them, does WSL2 release the RAM it acquired to run those containers?
At this point i would just install a linux distro like ubuntu/debian/arch as a VM on virtualbox/vmware/hyperv and do it from there, WSL2 is supposed to be custom ubuntu minus gui running on hypervany way.
WSL2 runs ubuntu on Hyper-V. It isn’t really as custom as you’d think. You can install other distros besides ubuntu. Or you can install regular ubuntu instead of LTS.
Take a look at this for running other distros: https://learn.microsoft.com/en-us/windows/wsl/use-custom-distro
It’s using Hyper-V technology, but it’s not just a VM, and can run on OSes that don’t run Hyper-V, like home editions. https://learn.microsoft.com/en-us/windows/wsl/faq
And as such it’s perfectly suited for what OP is trying to achieve. A custom VM will be a lot more work than using WSL2.
I wouldnt say a lot, maybe its more, but i would estimate 15min for wsl2 vs 45min for virtual box. Plus you get lot more featues than plain wsl2 and its quirks.
WSL2 is already installed and running without any extra setup required, so all the setup time for the VM is additional time you have to spend. You’ll have to fiddle a lot longer than 45min the first time you set it up if you want parity with the WSL2 installation (bidirectional mounts, bidirectional network access, GUI applications as normal windows, integration into Terminal etc). Until everything is running you’ll probably spend half a day, since you’ll have to first look up how to best do these things for your VM environment. Even more so if you want to use Windows tools with WSL2 integration, like the whole IntelliJ suite.
What features and quirks are you referring to?
Is it pre installed nowadays? I rember having to go to some store and doing stuff to get it…
Mounts and networks should be just checkboxes, dropdowns iirc.
Terminals are probably better on linux anyway, if we really want the stone age windows tools we can always ssh into it from windows.
I didnt really get the gui part, linux vm can have, and run GUIs, all the intellij stuff are available for linux natively. Even then iirc they can run with any linux remotely as well, just needs ssh. If you need it to run on windows like native apps, maybe use Xserver via ssh.
As far as quirks I read some comments in this thread about filesystem being too slow, maybe there are more.
And now that i have typed all these, if you want it to look and feel exactly as windows withput any compromise, idk…
Wut? The Windows tools are a lot newer than the Linux ones. Windows Terminal is better than anything preinstalled on a Linux desktop IMO
What are some features that the new windows terminals have that linux terminals don’t?
Time to share this wisdom with IT security departments of the companies I worked for. Wsl2 is in the zero trust white papers of MS (or whatever IT security uses to take decisions). Real distros are not. Result, no trust…
Enterprise IT… Non sense since the 70s
WSL2 supports GUI apps.
Meant to say a guo DE, not sure you can run plasma/jde on that, maybe with vnc/rdp? But still its with x11 server iirc.
Why would you need a desktop environment though? You’re already running Windows. You can run individual Linux GUI apps, which is enough for pretty much all use cases.
It should! https://devblogs.microsoft.com/commandline/memory-reclaim-in-the-windows-subsystem-for-linux-2/