
次のような 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
次に、次のシェル スクリプトを使用してビルドします...
#! /bin/bash
docker-compose build
docker-compose up -d
しかし、シェル スクリプトを実行すると、moby/buildkit:buildx-stable-1
コンテナーを作成しようとします。このコンテナーは失敗し、ビルドで次のエラーが発生します...
=> 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.
なぜこのようなことが起こるのでしょうか。また、この競合を防ぐにはどうすればよいのでしょうか。
答え1
docker build
このコンテナは、次のイメージを使用して、 Docker BuildKit (新しい代替品) によって作成されたようです。https://hub.docker.com/r/moby/buildkit
このコンテナを無効にするには、次のようにしてビルダー インスタンスをデフォルトに設定します。
docker buildx use default