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

Docker超入門:よくあるエラーと解決策①|イメージ名やYAML構文エラー

よくあるエラーと解決策①|イメージ名やYAML構文エラー

 Dockerを使っていると、ちょっとしたミスで「えっ、なんで動かないの!?」ということ、ありますよね。
 今回はそんな“あるある”なエラーの中から、「イメージ名の間違い」や「YAMLファイルの書き方ミス」を取り上げて、原因と解決方法をやさしく解説していきます。

作業前のクリーンアップ

まずは作業を始める前に、Dockerの中をきれいにしておきましょう。
 古いコンテナや使っていないイメージが残っていると、意図しない動作の原因になることがあります。

実行中のコンテナがあれば、先に全部停止しておきましょう。
そのあと、以下のコマンドを実行します👇

docker system prune -a --volumes

このコマンドはDockerの中を「大掃除」してくれるコマンドです。
ちょっと強力なので、実行する前に削除してもいいものだけが残っているか確認してくださいね。

オプション説明
-a使われていないすべてのイメージを削除します。
--volumes未使用のボリュームも一緒に削除します。

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes 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

もしコマンド操作が苦手な方は、Docker Desktopを使うのがおすすめです。
マウスで削除できるので、視覚的に確認しながら安全にクリーンアップできますよ。

作業フォルダの準備

次に、作業用のフォルダを作っておきましょう。

PowerShellで以下のコマンドを順に実行します。

cd desktop/docker
mkdir error1
cd error1

これで、デスクトップ上に「docker」→「error1」というフォルダができました。
この中にDockerの設定ファイル(compose.yaml)を置いて作業していきます。

実行結果

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

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

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/25     1:27                error1

PS C:\Users\joeac\Desktop\docker> cd error1
PS C:\Users\joeac\Desktop\docker\error1>

compose.yamlファイルを作る

VSCodeを起動して、次のコマンドを実行します。

code compose.yaml

これでVSCodeが開いたら、以下の内容を入力して保存します。

services:
  apache:
    image: apache:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

この中に、実は一つ「罠」があります。
イメージ名「apache:latest」は存在しないんです。
正しいイメージ名は httpd です。

エラー①:イメージ名を間違えた場合

試しにそのまま起動してみましょう。

docker compose up -d

すると、こんなエラーメッセージが出てきます👇

 ✘ apache Error pull access denied for apache, repository ...               1.7s
Error response from daemon: pull access denied for apache, repository does not exist or may require 'docker login'

 「apache」という名前のイメージがDocker Hubに存在しないため、アクセスが拒否されたという意味です。

✅ 解決策

イメージ名を正しい「httpd:latest」に直しましょう!

services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

修正できたらもう一度起動します。

docker compose up -d

これでOKです!

コンテナを停止しておきます。

docker compose stop

エラー②:インデントの間違い

次によくあるのが「インデント」のミス。
YAMLではスペースの数がとっても大事なんです。

たとえば、次のように書いてしまうと…

services:
  apache:
    image: httpd:latest
     ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

ports: の前にスペースが1つ多いですね。
これを実行すると次のようなエラーになります。

docker compose up -d
yaml: line 4: mapping values are not allowed in this context

意味は「この位置で値の対応関係(キー:値)は書けませんよ」という感じです。
つまり、インデントがズレてYAMLの構造が壊れているということです。

✅ 解決策

VSCodeを使えば、インデントミスは赤い波線で教えてくれるので気づきやすいです。
正しくは以下のように整えます。

services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

エラー③:リスト形式の書き方ミス

YAMLで「リスト」を書くときは、ハイフン(-)を忘れずに!
たとえば、次のように書くとエラーになります。

services:
  apache:
    image: httpd:latest
    ports: "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

実行してみます。

docker compose up -d

エラーメッセージはこうなります。

services.apache.ports must be a list

つまり、「portsはリストで指定しなきゃダメですよ」という意味ですね。

✅ 正しい書き方

services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/

修正後、もう一度以下のコマンドを実行してみましょう。

docker compose up -d
コマンド説明
docker compose upcompose.yamlに書かれたサービスを起動します。
-dバックグラウンドで動かすオプションです。

出力結果がこのようになれば成功です✨

PS C:\Users\joeac\Desktop\docker\error1> docker compose up -d
[+] Running 1/1
 ✔ Container error1-apache-1  Started  

ブラウザで確認!

最後に、ブラウザで localhost にアクセスしてみましょう。

このように表示されたら成功です!🎉

まとめ

今回は「イメージ名の間違い」や「YAML構文ミス」によるエラーを見てきました。

ポイントはこの3つです👇

  1. イメージ名はDocker Hubで確認する。(例:httpd
  2. YAMLのインデントはそろえる。
  3. リスト形式(-)を忘れない。

慣れてくるとエラーメッセージを見ただけで「どこを直せばいいか」が分かるようになりますよ😊