このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

よくあるエラーと解決策①

よくあるエラーと解決策①について解説していきます。

イメージ名やタグの間違い

httpdイメージの間違いを例に、解決策について解説していきます。

不要なDockerオブジェクトの削除

まず、不要なDockerオブジェクトをすべて削除しておきます。

以下のコマンドを実行します。

・「docker system prune -a」コマンドを実行します。

Are you sure you want to continue? [y/N] の質問には「y」と入力します。

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)

・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。

環境によって削除されずに残っているDockerオブジェクトは異なります。

ディレクトリの移動と作成

ディレクトリを移動します。

・「cd desktop/docker」コマンドを実行します。

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>

 「compose.yaml」ファイルを保存する「error1」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。

  • 「mkdir error1」コマンド
  • 「cd error1」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir error1

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024/04/29    16:13                error1

PS C:\Users\joeac\Desktop\docker> cd error1
PS C:\Users\joeac\Desktop\docker\error1>
・compose.yamlの作成

VSCodeで「compose.yaml」ファイルを作成します。

・「code compose.yaml」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\error1> code compose.yaml

VSCodeが起動します。

・「compose.yaml」ファイルの編集

・「compose.yaml」ファイルを以下のように編集して保存します。

3行目の「image: apache:latest」は間違いです。

Apacheサービスのイメージは、本当の名前は「httpd」です。

services:
  apache:
    image: apache:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/
コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\error1> docker compose up -d
[+] Running 1/1
 ✘ apache Error pull access denied for apache, repository does not exist or may require 'docker l...               2.6s
Error response from daemon: pull access denied for apache, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

以下のようにエラーメッセージが表示されます。

✘ apache Error pull access denied for apache, repository does not exist or may require ‘docker l… 2.6s
Error response from daemon: pull access denied for apache, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied

✘ apache Apache のエラー プル アクセスが拒否されました。リポジトリが存在しないか、「docker l… 2.6s が必要な可能性があります」
デーモンからのエラー応答: Apache のプル アクセスが拒否されました。リポジトリが存在しないか、「docker ログイン」が必要な可能性があります: 拒否されました: リソースへの要求されたアクセスが拒否されました

インデントの間違い

イメージ名の間違いを修正します。

今度は、インデントを間違えて、「docker compose up -d」コマンドを実行してみます。

・「compose.yaml」ファイルの編集

・以下のように「compose.yaml」ファイルを修正します。

4行目のインデントが間違えています。「image:」と「volumes:」と同じ位置にそろえておく必要があります。

ちなみに、VS Codeでは間違いを指摘してくれます。

services:
  apache:
    image: httpd:latest
     ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/
コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\error1> docker compose up -d
yaml: line 4: mapping values are not allowed in this context

以下のようにエラーメッセージが表示されます。

yaml: line 4: mapping values are not allowed in this context

yaml: 行 4: このコンテキストではマッピング値は許可されません

 エラーメッセージから、インデントの間違いであることに、気づきにくいですが、インデントを間違えた場合は、このようなエラーメッセージが表示されます。

リスト形式の間違い

リストの指定を間違えてみます。

「ports:」でのホストとコンテナのポート番号の関連付けは、値をリスト形式( – )で指定する必要があります。

・「compose.yaml」ファイルの編集

・以下のように「compose.yaml」ファイルを修正します。

4行目のリストの指定が間違えています。正しくは値をリスト形式( – )で「ports:」で指定する必要があります。

services:
  apache:
    image: httpd:latest
    ports: "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/
コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\error1> docker compose up -d
yaml: line 4: mapping values are not allowed in this context

以下のようにエラーメッセージが表示されます。

validating C:\Users\joeac\Desktop\docker\error1\compose.yaml: services.apache.ports must be a list

C:\Users\joeac\Desktop\docker\error1\compose.yaml を検証しています: services.apache.ports はリストである必要があります

エラーを修正してコンテナを起動させる

エラーを修正してコンテナを起動させます。

・「compose.yaml」ファイルの編集

・以下のように「compose.yaml」ファイルを修正します。

services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/
コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\error1> docker compose up -d
[+] Running 7/7
 ✔ apache Pulled                                                                                                   5.9s
   ✔ b0a0cf830b12 Pull complete                                                                                    1.3s
   ✔ 851c52adaa9b Pull complete                                                                                    0.7s
   ✔ 4f4fb700ef54 Pull complete                                                                                    0.7s
   ✔ 39d9f60535a6 Pull complete                                                                                    1.6s
   ✔ 943a2b3cf551 Pull complete                                                                                    2.0s
   ✔ ea83e81966d6 Pull complete                                                                                    2.0s
[+] Running 2/2
 ✔ Network error1_default     Created                                                                              0.0s
 ✔ Container error1-apache-1  Started

Apacheコンテナへの接続

・Webブラウザを起動して、URLに「localhost」と入力します。

ホームページが表示されます。

関連コンテンツ