I've run into a weird permissions issue in WSL 2 and am struggling to solve it. We have multiple containers that are running in docker via docker compose. Everything was working fine and then I went to run make rebuild with an updated dependencies file and I'm receiving the following exception:
(base) jam@Dagobah-System:~/dev$ sudo make rebuild
Input arguments
REPO: local
CONTAINER TAG: 0
SSH KEY PATH: /home/jam/.ssh/id_rsa
BASE REQS: ./deploy/environment/requirements.base.txt
CUSTOM REQS: ./deploy/environment/requirements.custom.txt
LOCAL REQS: ./deploy/environment/requirements.local.txt
TIMEZONE: Etc/UTC
DOCKERFILE: Dockerfile.local
Building base image
[+] Building 0.0s (1/2)
=> ERROR [internal] load build definition from Dockerfile.local 0.0s
------
> [internal] load build definition from Dockerfile.local:
------
failed to solve with frontend dockerfile.v0: failed to read dockerfile: failed to create lease: write /var/lib/docker/buildkit/containerdmeta.db: read-only file system
Finished building base image
Creating network "dev_default" with the default driver
ERROR: failed to update bridge store for object type *bridge.networkConfiguration: open /var/lib/docker/network/files/local-kv.db: read-only file system
makefile:24: recipe for target 'start-infra' failed
make: *** [start-infra] Error 1
If I close everything out, restart the machine, and I can bring the old containers back up and they run fine. This looks to be some sort of permissions issue between WSL 2, Docker, and the Docker directory on Windows 10 pro.
Windows 10 Pro Version: 10.0.19041 Build 19041
Shouldn't matter, but the user in wsl has the same credentials as the user on Windows. I also configured Docker for windows with:
- Start Docker Desktop when you login
- Expose daemon on tcp://localhost:2375 without TLS
- Use the WSL 2 based engine