docker composeコマンドでビルドができない問題とその解決方法

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のビルドに関連する一般的な問題とその解決方法です。これらの手順を参考に、効果的に問題を解決してください。

無制限に質問可能なプログラミングスクール!

万が一転職できない場合は、転職保障全額返金できるコースもあり!!

無制限のメンター質問対応

 

DMMウェブキャンプでプログラミングを学習しませんか?

独学より成長スピードをブーストさせましょう!

 

まずは無料相談から!

おすすめの記事