このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】よくあるエラーと解決策①

よくあるエラーと解決策①について解説していきます。
イメージ名やタグの間違い
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」と入力します。

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