ZFS 上的 ddev:服务“db”无法构建:无法复制文件:复制文件范围失败:参数无效

问题描述

服务“db”构建失败:复制文件失败:复制文件范围失败:参数无效 发生在任何新项目之后

启动我的任何 ddev 项目或使用 ddev config 创建新项目时会发生此错误。

更新:仅当 docker 数据(默认为 /var/lib/docker)位于 ZFS 卷上时才会发生这种情况。 我将其移至 EXT4 后问题就消失了。

docker 或 docker compose 似乎没有问题,因为我已经成功启动了两个项目的 example/hello-world 容器。

我尝试删除 ~/.ddev、降级 ddev 和降级 docker。我无法降级 docker-compose。

日志:

$ ddev start                                                                                                                                     
Starting test... 
mkcert may not be properly installed,we suggest installing it for trusted https support,`brew install mkcert nss`,`choco install -y mkcert`,etc. and then `mkcert -install` 
Running   Command=ip address show dev docker0
Building db 
Service 'db' failed to build : failed to copy files: copy file range failed: invalid argument 
Failed to start test: Failed to run docker-compose [-f /home/tester/htdocs/test/.ddev/.ddev-docker-compose-full.yaml up --build -d],err='exit status 1',stdout='Step 1/6 : ARG BASE_IMAGE
Step 2/6 : FROM $BASE_IMAGE
 ---> 33f3288968e4
Step 3/6 : ARG username
',stderr='Building db
Service 'db' failed to build : failed to copy files: copy file range failed: invalid argument' 

config.yml

name: test
type: php
docroot: ""
php_version: "7.3"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
mariadb_version: "10.2"
mysql_version: ""
provider: default
use_dns_when_possible: true
composer_version: ""

系统:

  • Docker 20.10.1
  • docker-compose 1.27.4
  • Manjaro Linux(Arch 衍生版)
  • ZFS 2.0.0-1(在根目录上)

码头信息

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc.,v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc.,v0.5.1-tp-docker)

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 27
 Server Version: 20.10.1
 Storage Driver: zfs
  Zpool: rpool
  Zpool Health: ONLINE
  Parent Dataset: rpool/root
  Space Used By Parent: 20958640128
  Space Available: 282678809088
  Parent Quota: no
  Compression: off
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b.m
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.2-2-MANJARO
 Operating System: Manjaro Linux
 OSType: linux
 Architecture: x86_64
 CPUs: 12
 Total Memory: 30.9GiB
 Name: testpc
 ID: BKDP:GAWJ:BUCV:OVP6:QUKY:UQCZ:AESP:V3AN:EXHE:BWJU:4TT7:YPEO
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

解决方法

(没有足够的声誉来发表评论,但这不是一个完整的答案。)

我遇到了同样的问题,在 Arch w/ZFS 上的 Docker 也是如此。我能够通过传递 DOCKER_BUILDKIT=0 docker build ... 来“修复”它。这似乎是 buildkit 中某处的问题。

我没有进一步深入了解导致问题的具体原因。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...