更新Windows版Docker Desktop后docker compose up触发空指针引用错误
Docker Compose up --build 触发空指针panic的解决办法
问题场景
更新Windows版Docker Desktop后,执行docker compose up --build app命令刷新远程镜像时出现空指针错误,其他Compose命令可正常运行。使用的Docker Compose版本为v2.12.2。
错误日志
panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x187d8c6] goroutine 12 [running]: github.com/docker/compose/v2/pkg/compose.(*composeService).getDrivers(0xc000399f80, {0x20a2448, 0xc0005d8db0}) github.com/docker/compose/v2/pkg/compose/build_buildkit.go:95 +0xc6 github.com/docker/compose/v2/pkg/compose.(*composeService).doBuildBuildkit(0xc000399f80, {0x20a2448, 0xc0005d8db0}, 0x0?, {0x1d918cd, 0x4}) github.com/docker/compose/v2/pkg/compose/build_buildkit.go:47 +0x87 github.com/docker/compose/v2/pkg/compose.(*composeService).doBuild(0xc000399f80, {0x20a2448, 0xc0005d8db0}, 0xc0005a55e0?, 0xc0004b1ad0, {0x1d918cd, 0x4}) github.com/docker/compose/v2/pkg/compose/build.go:228 +0xc5 github.com/docker/compose/v2/pkg/compose.(*composeService).ensureImagesExists(0x0?, {0x20a2448, 0xc0005d8db0}, 0xc0005a55e0, 0x0) github.com/docker/compose/v2/pkg/compose/build.go:134 +0x14d github.com/docker/compose/v2/pkg/compose.(*composeService).create(0xc000399f80?, {0x20a2448, 0xc0005d8db0}, 0xc0005a55e0, {{0xc000178a80, 0x1, 0x2}, 0x0, 0x0, {0x1d97342, ...}, ...}) github.com/docker/compose/v2/pkg/compose/create.go:67 +0x173 github.com/docker/compose/v2/pkg/compose.(*composeService).Up.func1({0x20a2448, 0xc0005d8db0}) github.com/docker/compose/v2/pkg/compose/up.go:36 +0xaa github.com/docker/compose/v2/pkg/progress.Run.func1({0x20a2448?, 0xc0005d8db0?}) github.com/docker/compose/v2/pkg/progress/writer.go:61 +0x27 github.com/docker/compose/v2/pkg/progress.RunWithStatus.func2() github.com/docker/compose/v2/pkg/progress/writer.go:82 +0x87 golang.org/x/sync/errgroup.(*Group).Go.func1() golang.org/x/sync@v0.0.0-20220819030929-7fc1605a5dde/errgroup/errgroup.go:75 +0x64 created by golang.org/x/sync/errgroup.(*Group).Go golang.org/x/sync@v0.0.0-20220819030929-7fc1605a5dde/errgroup/errgroup.go:72 +0xa5
解决方法
- 降级Compose版本:v2.12.2存在BuildKit相关的空指针bug,切换到v2.11.x稳定版即可解决。操作路径:Docker Desktop设置 -> Features in development -> Docker Compose version,选择旧版本后重启Docker。
- 禁用BuildKit构建:临时绕过问题,执行命令前设置环境变量
set DOCKER_BUILDKIT=0(Windows cmd)或$env:DOCKER_BUILDKIT=0(PowerShell),再运行docker compose up --build app;也可以在docker-compose.yml的build字段中添加x-use-buildkit: false。 - 升级到最新稳定版:后续发布的Compose版本已修复该bug,直接在Docker Desktop中升级到最新版即可。
- 重置Docker Desktop:如果是配置文件损坏导致的异常,可在Docker Desktop设置 -> Troubleshoot -> Reset to factory defaults,重置前注意备份重要镜像和容器。
内容的提问来源于stack exchange,提问作者dark
相关产品推荐
相关产品推荐

