首页 > 解决方案 > Docker Compose 无法进行重建

问题描述

我在 WSL 2 中遇到了一个奇怪的权限问题,并且正在努力解决它。我们有多个容器通过 docker compose 在 docker 中运行。一切正常,然后我make rebuild使用更新的依赖文件运行,我收到以下异常:

(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

如果我关闭所有内容,重新启动机器,我可以恢复旧容器并且它们运行良好。这看起来是 WSL 2、Docker 和 Windows 10 pro 上的 Docker 目录之间的某种权限问题。

Windows 10 专业版:10.0.19041 Build 19041

没关系,但 wsl 中的用户与 Windows 上的用户具有相同的凭据。我还为 Windows 配置了 Docker:

  1. 登录时启动 Docker Desktop
  2. 在没有 TLS 的情况下在 tcp://localhost:2375 上公开守护进程
  3. 使用基于 WSL 2 的引擎

标签: dockerdocker-composewindows-subsystem-for-linuxwsl-2

解决方案


推荐阅读