我发现了一个我认为很奇怪的Docker构建问题。这个问题似乎非常特定于我的电脑,因为我在其他机器上看到过这个构建成功。看起来像是在
我正在寻求关于如何解决这个问题的任何建议。也许过几天我会尝试重新安装Docker。无论如何,我认为这是一个有趣的问题,也许在这里讨论它会对其他人有所帮助。
以下是一个在我的电脑上失败但在其他机器上成功的最小设置。
在这个例子中,我正在使用一个
有一些讨论在https://github.com/moby/moby/issues/9547中,但是提出的解决方案(sleep/sync和将存储驱动更改为
在"dockerfile"文本文件繁忙中有一些讨论,建议作者修改他们构建和注入休眠的文件。在我的情况下,当与第三方NPM包一起工作时会出现这种情况,在其他情况下似乎正常工作,所以我无法修改那段代码。我也不能注入休眠,因为故障发生在
npm install
命令期间,docker build
失败并显示npm ERR! sh: 1: node-pre-gyp: Text file busy
。我本来期望构建能够顺利完成而没有任何问题。如果出现任何问题,我希望它们在不同的机器上是一致的 - 毕竟这是一个Docker构建。值得注意的是,这在我的电脑上曾经正常工作,但最近突然出现了问题。我不确定发生了什么变化。我不认为我在最近几天做了任何重大的与Docker相关的更改。我正在寻求关于如何解决这个问题的任何建议。也许过几天我会尝试重新安装Docker。无论如何,我认为这是一个有趣的问题,也许在这里讨论它会对其他人有所帮助。
以下是一个在我的电脑上失败但在其他机器上成功的最小设置。
package.json
:
{
"name": "test",
"version": "0.1.0",
"author": "test",
"type": "commonjs",
"license": "ISC",
"dependencies": {
"canvas": "^2.11.2"
}
}
Dockerfile
:
FROM node:slim
WORKDIR /app
COPY ./package.json ./
RUN npm install
运行 docker build --pull --no-cache .
失败,显示错误信息
[+] Building 3.3s (8/8) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 107B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/node:slim 0.1s
=> [1/4] FROM docker.io/library/node:slim@sha256:bffbb1bf1a3afd6fbdd822bda7f1e7cb07eb407f3dc 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 201B 0.0s
=> CACHED [2/4] WORKDIR /app 0.0s
=> [3/4] COPY ./package.json ./ 0.0s
=> ERROR [4/4] RUN npm install 3.1s
------
> [4/4] RUN npm install:
#0 3.026 npm notice
#0 3.026 npm notice New minor version of npm available! 9.6.7 -> 9.7.1
#0 3.026 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.7.1>
#0 3.026 npm notice Run `npm install -g npm@9.7.1` to update!
#0 3.026 npm notice
#0 3.027 npm ERR! code 126
#0 3.027 npm ERR! path /app/node_modules/canvas
#0 3.028 npm ERR! command failed
#0 3.028 npm ERR! command sh -c node-pre-gyp install --fallback-to-build --update-binary
#0 3.028 npm ERR! sh: 1: node-pre-gyp: Text file busy
#0 3.029
#0 3.029 npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2023-06-19T16_22_22_524Z-debug-0.log
------
Dockerfile:6
--------------------
4 |
5 | COPY ./package.json ./
6 | >>> RUN npm install
7 |
--------------------
ERROR: failed to solve: process "/bin/sh -c npm install" did not complete successfully: exit code: 126
在这个例子中,我正在使用一个
canvas
包。我也看到了这个问题,例如与@ory/cli
包一起使用时出现的问题。这个问题似乎出现在运行一些额外脚本的NPM包安装期间。目前,我不确定这是一个Docker问题还是NPM问题。有一些讨论在https://github.com/moby/moby/issues/9547中,但是提出的解决方案(sleep/sync和将存储驱动更改为
overlay2
)都不适用于这里。我无法插入一个延迟,因为问题发生在npm install
命令期间,而且我不能切换到overlay2
,因为...我已经在使用overlay2
。在"dockerfile"文本文件繁忙中有一些讨论,建议作者修改他们构建和注入休眠的文件。在我的情况下,当与第三方NPM包一起工作时会出现这种情况,在其他情况下似乎正常工作,所以我无法修改那段代码。我也不能注入休眠,因为故障发生在
npm install
命令期间。
docker info
的输出结果。Client: Docker Engine - Community
Version: 24.0.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.10.4
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.17.3
Path: /usr/libexec/docker/cli-plugins/docker-compose
scan: Docker Scan (Docker Inc.)
Version: v0.23.0
Path: /usr/libexec/docker/cli-plugins/docker-scan
Server:
Containers: 8
Running: 2
Paused: 0
Stopped: 6
Images: 8
Server Version: 24.0.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
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 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc version: v1.1.7-0-g860f061
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 5.15.0-43-generic
Operating System: Ubuntu 22.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 20
Total Memory: 15.3GiB
Name: mateusz-mcss
ID: FLNN:HZMZ:5PZG:VHGO:2BCN:6MKS:5C4I:DJQT:DT5J:CIGG:QGFD:UYRS
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false