I was doing some testing on Windows for a command line tool last week that required a Docker daemon. I already had a Windows environment setup (minus Docker) on VirtualBox. The problem is VirtualBox does not handle nested virtualization well and my laptop was struggling with the virtual machines I needed already. Here are some easy steps to share a Docker daemon from your host machine with your VMs.
If your host machine is Windows, open your Docker settings and enable the "Expose Daemon on tcp://localhost:2375 without TLS" option and continue to the Virtual Machine section below. Linux users, continue reading:
- We need to edit the docker server configs, run
sudo vim /lib/systemd/system/docker.service
- On the
-H tcp://0.0.0.0:2375to the end and save
- Reload the service with
systemctl daemon-reload && sudo service docker restart
To verify you can visit
http://localhost:2375/version in a browser or
curl http://localhost:2375/version and get JSON output of your Docker Engine version.
Configuring your virtual machine to use your host machines Docker daemon requires access to that machine via the network and setting an environment variable, the process is nearly identical on Linux and Windows:
set DOCKER_HOST=<host_IP>:2375 && docker run hello-world
DOCKER_HOST=<host_IP>:2375 && docker run hello-world
You can, of course, permanently set your
DOCKER_HOST environment variable and user Docker as you would as if the daemon was running on your machine.