0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker周りのトラブルシューティングガイドブック

Posted at

背景

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でトラブルが発生したら、以下の手順で対処しましょう。

  1. docker ps -a でコンテナの状態を確認
  2. docker logs <コンテナ名> でエラー内容を確認
  3. ポート競合なら netstat -ano | findstr :<ポート番号> を確認
  4. 該当プロセスを強制終了 taskkill /PID <PID> /F
  5. コンテナが正常に動かない場合 docker-compose up --build --force-recreate
  6. 不要なコンテナやイメージを削除 docker system prune -a
  7. WSL2環境なら wsl --shutdown でWSLをリセット
  8. Docker Desktopの再起動 taskkill /IM "Docker Desktop.exe" /F

これでDockerの不具合もスムーズに解決できるはずです!🔥

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?