タイトル: エラー一覧
SEOタイトル: Docker よくあるエラー集と対処完全ガイド
| この記事の要点 |
|
Docker でよく遭遇するエラー一覧
Docker は数百種類のエラーメッセージがありますが、本番開発で頻出するのは 10〜15 種類程度。本記事では原因と対処をまとめます。
1. Cannot connect to the Docker daemon
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Is the docker daemon running?
原因:
- Docker Desktop / dockerd サービスが起動していない
- ユーザーが
dockerグループに入っていない - WSL 環境で Docker Desktop の WSL 統合が無効
# Linux: サービス起動確認
sudo systemctl status docker
sudo systemctl start docker
sudo systemctl enable docker
# docker グループに追加 (要ログアウト)
sudo usermod -aG docker $USER
newgrp docker
# Docker Desktop (Mac/Win): アプリを起動
# WSL: 設定 → Resources → WSL integration を ON
2. permission denied while trying to connect to docker.sock
Got permission denied while trying to connect to the Docker daemon socket
at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version":
dial unix /var/run/docker.sock: connect: permission denied# 上記 1. と同じく docker グループへ
sudo usermod -aG docker $USER
newgrp docker
# 一時しのぎ (毎回 sudo)
sudo docker ps
# socket の権限確認
ls -la /var/run/docker.sock
# srw-rw---- 1 root docker 0 May 10 docker.sock
3. Bind for 0.0.0.0:XXXX failed: port is already allocated
# どのコンテナがポートを使っているか
docker ps --format "table {{.Names}}\t{{.Ports}}"
# 該当コンテナ停止
docker stop mycontainer
# ホストプロセスが使っている場合
sudo lsof -i :3306
sudo ss -tnlp | grep 3306
# Docker Desktop で全部止める
docker stop $(docker ps -q)
# compose 起動時に発生したら docker compose down してから up
docker compose down
docker compose up -d
4. no space left on device
Docker は使い終わったイメージ / ボリューム / ビルドキャッシュをため込むので、定期的に掃除が必要です。
# 使用状況確認
docker system df
# TYPE TOTAL ACTIVE SIZE RECLAIMABLE
# Images 45 8 12.5GB 9.2GB (73%)
# Containers 8 2 890MB 640MB (71%)
# Local Volumes 23 5 4.2GB 3.1GB (73%)
# Build Cache 120 0 8.7GB 8.7GB (100%)
# 一括掃除 (確認付き)
docker system prune
# 全部消す (ボリュームも) ★ データ消失注意
docker system prune -af --volumes
# 個別
docker image prune -af
docker container prune -f
docker volume prune -f
docker builder prune -af
# Docker Desktop ディスク上限拡張
# 設定 → Resources → Advanced → Disk image size
5. toomanyrequests: You have reached your pull rate limit
Docker Hub の匿名ユーザーは 6 時間で 100 pull、認証付きで 200 pull、Pro / Team で無制限。CI 環境で頻発します。
# Docker Hub にログイン
docker login -u myusername
# CI なら secrets でログイン
# GitHub Actions
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 代替: GHCR / ECR Public / quay.io
docker pull ghcr.io/owner/image:tag
docker pull public.ecr.aws/...
# プロキシレジストリでキャッシュ (Harbor, Nexus)
6. network XXX not found
# ネットワーク一覧
docker network ls
# 不在なら作成
docker network create mynet
# compose ファイル内で外部ネットワーク参照していたら
networks:
default:
external: true
name: mynet
7. Container exited with code (0 / 1 / 137 / 139)
| Exit Code | 意味 | 対処 |
|---|---|---|
| 0 | 正常終了。長寿命プロセスではない | CMD が即終了するスクリプト。常駐コマンドに変更 |
| 1 | 一般エラー | docker logs で詳細確認 |
| 125 | Docker daemon エラー | 引数ミス、image 不在 |
| 126 | コマンドが実行不可 (パーミッション) | chmod +x |
| 127 | コマンドが見つからない | PATH / 入れ忘れ |
| 137 | OOM Killer により SIGKILL | --memory 増やす or 最適化 |
| 139 | SIGSEGV (セグフォルト) | ネイティブコードのバグ |
| 143 | SIGTERM (正常停止) | 意図通り |
8. Build context is too large
# 原因: .git や node_modules を全部送信している
# .dockerignore を作る
cat > .dockerignore <<EOF
.git
node_modules
*.log
.env
dist
coverage
EOF
# BuildKit で並列ビルド (高速)
DOCKER_BUILDKIT=1 docker build -t myapp .
9. Docker Desktop が起動しない (Windows)
- BIOS で仮想化 (VT-x / AMD-V) を有効化
- WSL2 を更新:
wsl --update - Hyper-V とサードパーティ仮想化の競合 (VirtualBox 6.0 以下と非互換)
- %LOCALAPPDATA%\Docker を削除して再インストール (設定リセット)
10. compose down -v で全部消したい
# 停止 + コンテナ + ネットワーク削除
docker compose down
# ★ ボリュームも消す (DB データ消失注意)
docker compose down -v
# orphan コンテナも
docker compose down --remove-orphans
# 全部リセットして再構築
docker compose down -v --remove-orphans
docker compose build --no-cache
docker compose up -d
デバッグ三種の神器
# ログを見る (-f で追従)
docker logs -f --tail=200 mycontainer
# シェル接続 (alpine なら sh)
docker exec -it mycontainer bash
# 停止コンテナにも入る (commit して run)
docker commit mycontainer debugimg
docker run -it --rm debugimg sh
# プロセス・リソース確認
docker top mycontainer
docker stats
docker inspect mycontainer | jq '.[0].State'
FAQ
Q: Docker Desktop が遅い (Mac)
A: VirtioFS を有効化 (設定 → General)、Rosetta 利用 (Apple Silicon)、ファイル共有最小化、メモリ割当を 4GB → 8GB へ。
Q: イメージサイズを減らしたい
A: マルチステージビルド、FROM alpine や distroless 利用、--no-cache でパッケージマネージャを使う。
Q: コンテナが起動と同時に終了する
A: Foreground プロセスが必要。CMD ["nginx", "-g", "daemon off;"] のように常駐モードで起動。