Warum wird beim Versuch, einen Container zu erstellen, ein moby/buildkit:buildx-stable-1 erstellt, was zu einem Container-Namenskonflikt führt?

Warum wird beim Versuch, einen Container zu erstellen, ein moby/buildkit:buildx-stable-1 erstellt, was zu einem Container-Namenskonflikt führt?

Ich habe das folgende Docker-Compose ...

version: "3.8"
services:
  proxy:
    container_name: proxy
    extra_hosts:
      - "host.docker.internal:host-gateway"
    build:
      context: proxy
      dockerfile: Dockerfile
    volumes:
      - ./proxy/certificate:/usr/cert
    ports:
      - "443:443"
  ui:
    container_name: ui
    restart: always
    build:
      context: frontend
    ports:
      - "80:80"
  backend:
    container_name: backend
    restart: always
    build:
      context: backend
    ports:
      - "8000:8000"
    environment:
      - API_KEY
      - GOLD_TOKEN

Dann verwende ich das folgende Shell-Skript zum Erstellen ...

#! /bin/bash
docker-compose build
docker-compose up -d

Aber wenn ich das Shell-Skript ausführe, versucht es, einen moby/buildkit:buildx-stable-1Container zu erstellen. Dieser Container schlägt fehl und ich erhalte den folgenden Fehler in meinem Build ...

 => ERROR [internal] booting buildkit                                                                                                                                  0.9s
 => => pulling image moby/buildkit:buildx-stable-1                                                                                                                     0.8s
 => => creating container buildx_buildkit_gallant_newton0                                                                                                              0.1s
[+] Building 0.9s (1/1) FINISHED                                                                                                                                            
 => CANCELED [internal] booting buildkit                                                                                                                               0.9s
 => => pulling image moby/buildkit:buildx-stable-1                                                                                                                     0.8s
 => => creating container buildx_buildkit_gallant_newton0  
Error response from daemon: Conflict. The container name "/buildx_buildkit_gallant_newton0" is already in use by container "8b56bc95c1e26b736d0f297236adce9766f1363b1f94b35fcbc29ac96b4b61d3". You have to remove (or rename) that container to be able to reuse that name.

Warum passiert das und wie kann ich diesen Konflikt verhindern?

Antwort1

Dieser Container wird offensichtlich von Docker BuildKit (dem neuen docker buildErsatz) unter Verwendung dieses Images erstellt: https://hub.docker.com/r/moby/buildkit

Um diesen Container zu deaktivieren, können Sie die Builder-Instanz wie folgt auf den Standardwert setzen:

docker buildx use default

verwandte Informationen