If you try to run the Azure IoT Edge Runtime or the Azure IoT Edge Dev Tool on Windows Subsystem for Linux (WSL), then you will run into the following errors:
ERROR: Could not login to Container Registry. Please verify your credentials in CONTAINER_REGISTRY_ environment variables. If you are using WSL, then please set DOCKER_HOST Environment Variable. See the projects readme for full instructions.
('Connection aborted.', error(2, 'No such file or directory')) ERROR: Could not connect to docker daemon. ERROR: Docker is unavailable CRITICAL: IoT Edge dependency not available: docker
Here’s how to fix that:
- Do not install Docker in WSL, you can use Docker on your Windows machine by modifying the path.
- In Docker Settings/General, Check “Expose Daemon on tcp:// without TLS”
- Execute the following in a Bash terminal. This will make
dockeravailable in your Bash terminal.
echo "PATH=\"$PATH:$HOME/bin:$HOME/.local/bin:/mnt/c/Program\ Files/Docker/Docker/resources/bin\"" >> ~/.bashrc echo "alias docker=docker.exe" >> ~/.bashrc echo "alias docker-machine=docker-machine.exe" >> ~/.bashrc echo "alias docker-compose=docker-compose.exe" >> ~/.bashrc echo "export DOCKER_HOST='tcp://localhost:2375'" >> ~/.bashrc source ~/.bashrc sudo sh -c "echo Defaults env_keep += \"DOCKER_HOST\" >> /etc/sudoers.d/docker"
This will add Docker to your PATH, create aliases for the docker*.exe files and create a sudoers file so you don’t have to pass -E into the command every time you run it.
Let me know if you run into any issues.