
Dockerを使用する際、特定の問題に直面することがよくあります。この記事では、Docker Composeのビルドに関連する2つの一般的な問題と、それらの解決策について説明します。
Docker Composeのバージョンが古い
問題
以下のエラーが表示される:
% docker compose build
[+] Building 2.1s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/php:8.1-fpm-buster 2.0s
=> [auth] library/php:pull token for registry-1.docker.io 0.0s
------
> [internal] load metadata for docker.io/library/php:8.1-fpm-buster:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: Post "https://auth.docker.io/token": dial tcp: lookup auth.docker.io on 192.168.20.1:53: server misbehaving
原因
この問題は、使用しているdocker-compose
のバージョンが古いために生じる可能性が高いです。最近のDockerのバージョンでは、docker-compose
コマンドの代わりにdocker compose
(スペースあり)が推奨されています。
解決方法
以下の2つのコマンドを実行して、docker-compose
を最新バージョンに更新します。
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
キーチェーンアクセスの問題
問題
以下のエラーが表示される:
yaju@MacBook-Pro docker-laravel9-vue3 % docker compose build
[+] Building 0.9s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/php:8.1-fpm-buster 0.8s
------
> [internal] load metadata for docker.io/library/php:8.1-fpm-buster:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exit status 1, out: `error getting credentials - err: exit status 1, out: `keychain cannot be accessed because the current session does not allow user interaction. The keychain may be locked; unlock it by running "security -v unlock-keychain ~/Library/Keychains/login.keychain-db" and try again``
原因
このエラーは、DockerがMacのキーチェーンに保存されている認証情報にアクセスできなかったことを示しています。SSH経由でMacに接続して操作していると、このような問題が発生する可能性が高いです。
解決方法
Macの実機上で直接コマンドを実行してください。必要に応じて、以下のコマンドを使用してキーチェーンをアンロックすることもできます。
security -v unlock-keychain ~/Library/Keychains/login.keychain-db
以上がDocker Composeのビルドに関連する一般的な問題とその解決方法です。これらの手順を参考に、効果的に問題を解決してください。