There is a much better way to do this now with WSL2. You can actually host the Docker engine inside WSL2 and have it accessible to windows & Ubuntu without needing to expose without TLS. If you did the steps below previously, remove the
export DOCKER_HOST declaration before updating to the new WSL2 version.
My build toolchain is frequently in there for node based applications, and I was looking for a way to run docker commands from WSL (Windows Subsystem for Linux https://docs.microsoft.com/en-au/windows/wsl/install-win10 ).
Note: The below steps are a quick way to get it working but involves disabling TLS authentication. A more involved way to do this without disabling TLS can be found at https://blogs.technet.microsoft.com/virtualization/2017/12/08/wsl-interoperability-with-docker/
This setup puts the docker engine in Windows on top of Hyper-V, but allows you to control it either from Windows, or within WSL by connecting it to the Windows Docker Engine.
- Install docker for windows https://docs.docker.com/docker-for-windows/install/
- Go into the Docker for Windows settings and expose daemon on
- Install docker in WSL (it'll just install the client) https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Tell WSL to look for a docker engine on localhost
TIP: put the export into your ~/.bashrc so you don't need to run it ever time.
Now you will be able to run standard docker commands run new images, show the running containers, etc.