fix(engine/buildx): recipe used reserved 'default' builder name
'docker buildx create --name default' errors with 'default is a reserved name and cannot be used to identify builder instance'. The bundled builder always exists under that name; the recipe should switch to it (buildx use default), not try to recreate it. For the count==0 driver-rebuild branch, the new builder needs a non-reserved name — using 'decnet-builder' as the example.
This commit is contained in:
@@ -203,17 +203,17 @@ def _buildx_recovery_hint(*, leaked_mounts: int, original_stderr: str = "") -> s
|
||||
" 3. for m in $(mount | awk '$3 ~ /buildkit-mount/ {print $3}'); do sudo umount -l \"$m\"; done\n"
|
||||
" 4. rm -rf ~/.docker/buildx/activity\n"
|
||||
" 5. sudo systemctl start docker\n"
|
||||
" 6. docker buildx create --use --name default && docker buildx inspect --bootstrap"
|
||||
" 6. docker buildx use default # bundled builder is reserved-named; switch to it"
|
||||
)
|
||||
else:
|
||||
fix = (
|
||||
"No leaked mounts (count=0) — the buildx driver state "
|
||||
"itself is inconsistent.\n"
|
||||
"Recovery:\n"
|
||||
" 1. docker buildx rm default 2>/dev/null\n"
|
||||
" 2. rm -rf ~/.docker/buildx/activity ~/.docker/buildx/instances/default\n"
|
||||
" 3. docker buildx create --use --name default\n"
|
||||
" 4. docker buildx inspect --bootstrap"
|
||||
" 1. rm -rf ~/.docker/buildx/activity ~/.docker/buildx/instances/*\n"
|
||||
" 2. docker buildx create --name decnet-builder --use --bootstrap\n"
|
||||
" (the name 'default' is reserved by Docker — pick anything else)\n"
|
||||
" 3. docker buildx inspect"
|
||||
)
|
||||
tail = "See wiki: Troubleshooting → 'Buildx leaked mounts'."
|
||||
parts = [head, fix, tail]
|
||||
|
||||
@@ -176,7 +176,7 @@ class TestComposeWithRetry:
|
||||
)
|
||||
with pytest.raises(subprocess.CalledProcessError) as ei:
|
||||
deployer._compose_with_retry("up", "--build")
|
||||
assert "buildx create --use" in ei.value.stderr
|
||||
assert "buildx create --name decnet-builder" in ei.value.stderr
|
||||
assert "umount" not in ei.value.stderr
|
||||
assert "No leaked mounts (count=0)" in ei.value.stderr
|
||||
|
||||
|
||||
Reference in New Issue
Block a user