背景
Dockerを使用していると、コンテナが起動しない、ポートが競合する、ネットワークがつながらないなど、さまざまな不具合が発生することがあります。本記事では、Dockerの不具合を解決するためのコマンドや手順をまとめました。
1. Dockerの基本情報を確認する
🔍 Dockerが正常に動作しているかチェック
docker version # Dockerのバージョン確認
docker info # システムの詳細情報確認
📋 コンテナとイメージの状態を確認
docker ps -a # すべてのコンテナ(実行中・停止中)を一覧表示
docker images # 保存されているDockerイメージ一覧
docker network ls # Dockerネットワーク一覧
docker volume ls # Dockerボリューム一覧
2. コンテナ関連のトラブルシューティング
⚠ コンテナが起動しない場合の対処
docker logs <コンテナ名 or コンテナID> # コンテナのログを確認
docker inspect <コンテナ名 or コンテナID> # コンテナの詳細情報を取得
docker top <コンテナ名 or コンテナID> # コンテナ内のプロセス確認
🚑 コンテナがエラーで即終了する場合
docker start <コンテナ名 or コンテナID> # コンテナを再起動
docker restart <コンテナ名 or コンテナID> # コンテナをリスタート
docker run -it --rm <イメージ名> /bin/sh # 手動でコンテナを起動しデバッグ
🔄 不要なコンテナの削除
docker rm -f <コンテナ名 or コンテナID>
3. イメージ関連のトラブルシューティング
🛠 イメージの詳細を確認
docker history <イメージ名> # イメージの作成履歴を確認
docker inspect <イメージ名> # イメージの詳細情報を取得
🗑 不要なイメージの削除
docker rmi <イメージ名 or イメージID>
docker rmi $(docker images -q) # すべてのイメージを削除
4. ポート競合の解決方法
🔍 特定のポートを使用しているプロセスを調査
netstat -ano | findstr :3306 # 例: MySQLの3306番ポートを調査
🛑 プロセスを強制終了
taskkill /PID <プロセスID> /F
🔄 ポート競合を解決後、Dockerを再起動
docker-compose up -d # バックグラウンドでコンテナを起動
5. ネットワーク関連のトラブルシューティング
🌐 ネットワークの詳細を確認
docker network inspect <ネットワーク名>
docker network ls # ネットワーク一覧表示
🔄 ネットワークを削除・再作成
docker network rm <ネットワーク名>
docker network create <新しいネットワーク名>
🔗 コンテナのネットワーク接続を確認
docker network connect <ネットワーク名> <コンテナ名 or コンテナID>
docker network disconnect <ネットワーク名> <コンテナ名 or コンテナID>
6. Docker全体のクリーンアップ
🗑 不要なリソースを削除
docker system prune -a # すべての不要なコンテナ、イメージ、ネットワークを削除
docker system df # ディスク使用量の確認
🗑 すべてのコンテナ・イメージ・ボリュームを削除
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls -q)
7. Docker Compose のトラブルシューティング
🚀 サービスの状態を確認
docker-compose ps
docker-compose logs
🔄 サービスを再起動
docker-compose restart
🏗 エラー時のデバッグ
docker-compose up --build --force-recreate
🗑 すべてのコンテナ・ネットワーク・ボリュームを削除
docker-compose down -v --remove-orphans
8. その他のデバッグ方法
🛠 コンテナ内に入る
docker exec -it <コンテナ名 or コンテナID> /bin/sh # Alpine Linux
docker exec -it <コンテナ名 or コンテナID> /bin/bash # Ubuntu, Debian
🔄 Docker自体を再起動
sudo systemctl restart docker # Linux
docker system prune -a # すべての不要なデータを削除
📝 Docker Daemonのログ確認
journalctl -u docker --no-pager | tail -n 100
まとめ
Dockerでトラブルが発生したら、以下の手順で対処しましょう。
docker ps -a
でコンテナの状態を確認docker logs <コンテナ名>
でエラー内容を確認- ポート競合なら
netstat -ano | findstr :<ポート番号>
を確認 - 該当プロセスを強制終了
taskkill /PID <PID> /F
- コンテナが正常に動かない場合
docker-compose up --build --force-recreate
- 不要なコンテナやイメージを削除
docker system prune -a
- WSL2環境なら
wsl --shutdown
でWSLをリセット - Docker Desktopの再起動
taskkill /IM "Docker Desktop.exe" /F
これでDockerの不具合もスムーズに解決できるはずです!🔥