タイトル: 初心者から上級者まで学べるDockerコマンド完全ガイド
1. Dockerとは?基本概念の解説
Dockerの概要
Dockerは、アプリケーションのデプロイメントを簡素化するためのコンテナ化プラットフォームです。コンテナはアプリケーションとその依存関係を含み、開発から本番環境まで一貫した動作を保証します。
図: Dockerのアーキテクチャ
コンテナとイメージの違い
- イメージ:静的なファイルシステムのスナップショットであり、アプリケーションの実行環境を構成します。
- コンテナ:イメージから作成される実行時のインスタンスで、プロセスが実行される環境です。
図: イメージとコンテナの関係
Dockerの利点
- 軽量性:仮想マシンよりもリソースの消費が少なく、高速です。
- ポータビリティ:どの環境でも同じように動作するため、開発から本番まで一貫性があります。
- 効率性:アプリケーションの依存関係を含むため、環境の設定が簡単になります。
2. 基本的なDockerコマンド一覧
docker run
:コンテナの起動
新しいコンテナを起動するためのコマンドです。
コマンド例:
docker run -d -p 80:80 nginx
説明: このコマンドは、Nginxのコンテナをバックグラウンドで起動し、ホストのポート80をコンテナのポート80にマッピングします。
docker ps
:稼働中のコンテナの確認
現在稼働中のコンテナを一覧表示します。
コマンド例:
docker ps
出力例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9b100f2f636 nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp amazing_pike
docker stop
とdocker kill
:コンテナの停止
docker stop
:コンテナをまず正常にコンテナを停止しようとしますが、タイムアウト後には強制停止される可能性もあります。 コマンド例:
docker stop [CONTAINER_ID]
docker kill
:即時にコンテナを停止します。強制終了。 コマンド例:
docker kill [CONTAINER_ID]
docker rm
:コンテナの削除
停止したコンテナを削除します。
コマンド例:
docker rm [CONTAINER_ID]
docker images
とdocker rmi
:イメージの確認と削除
docker images
:ローカルに保存されているイメージを一覧表示します。 コマンド例:
docker images
docker rmi
:指定したイメージを削除します。 コマンド例:
docker rmi [IMAGE_ID]
3. Dockerイメージの管理
docker build
:イメージの作成
Dockerfile
を基にイメージを作成します。
コマンド例:
docker build -t my-image:latest .
説明: このコマンドは、カレントディレクトリのDockerfile
を基にmy-image
という名前のイメージを作成します。
図: Dockerfileからイメージを作成する流れ
docker pull
とdocker push
:イメージの取得とアップロード
docker pull
:リモートリポジトリからイメージを取得します。 コマンド例:
docker pull nginx
docker push
:ローカルのイメージをリモートリポジトリにアップロードします。 コマンド例:
docker push my-repo/my-image:1.0
docker tag
:イメージのタグ付け
イメージに新しいタグを付けることで、バージョン管理やリポジトリ管理を行います。
コマンド例:
docker tag my-image:latest my-repo/my-image:1.0
4. Dockerネットワーキングの基本
docker network
コマンドの使い方
Dockerネットワーキング関連のコマンドです。
docker network create
:新しいネットワークを作成します。 コマンド例:
docker network create my-network
docker network ls
:利用可能なネットワークを一覧表示します。 コマンド例:
docker network ls
docker network inspect
:ネットワークの詳細を表示します。 コマンド例:
docker network inspect my-network
ネットワークの作成と管理
カスタムネットワークを作成し、コンテナ間の通信を管理します。
コマンド例:
docker run -d --network my-network --name container1 my-image
docker run -d --network my-network --name container2 my-image
図: コンテナ間のネットワーキング
コンテナ間の通信
同じネットワークに接続されたコンテナは、サービス名やコンテナ名で通信できます。
5. Dockerボリュームの取り扱い
docker volume
コマンドの使い方
docker volume create
:新しいボリュームを作成します。 コマンド例:
docker volume create my-volume
docker volume ls
:利用可能なボリュームを一覧表示します。 コマンド例:
docker volume ls
docker volume rm
:指定したボリュームを削除します。 コマンド例:
docker volume rm my-volume
データの永続化
コンテナが削除されてもデータを保持するためにボリュームを使用します。
コマンド例:
docker run -d -v my-volume:/data my-image
図: ボリュームによるデータの永続化
ボリュームの作成と削除
データを管理しやすくするために、ボリュームを作成し、不要になったボリュームを削除します。
6. Dockerコンテナのデバッグとログ管理
docker logs
:コンテナのログ確認
コンテナの標準出力と標準エラー出力を表示します。
コマンド例:
docker logs [CONTAINER_ID]
図: コンテナログの表示
docker exec
:コンテナ内でコマンド実行
実行中のコンテナ内
でコマンドを実行します。
コマンド例:
docker exec -it [CONTAINER_ID] /bin/bash
docker inspect
:コンテナの詳細情報確認
コンテナの詳細な設定や状態を表示します。
コマンド例:
docker inspect [CONTAINER_ID]
図: コンテナの詳細情報
7. 高度なDockerコマンドの活用
docker-compose
:マルチコンテナアプリケーションの管理
docker-compose
を使用して複数のコンテナを管理します。
コマンド例:
docker-compose up -d
docker-compose down
図: Docker Composeの使用
docker swarm
とdocker stack
:クラスタリングとサービスの管理
Docker Swarmを使用してクラスターを構成し、docker stack
でサービスをデプロイします。
コマンド例:
docker swarm init
docker stack deploy -c docker-compose.yml my-stack
図: Docker SwarmとStackの管理
8. Dockerコマンドのトラブルシューティング
よくあるエラーと対処法
- コンテナが起動しない:コンテナのログや設定ファイルを確認し、エラーの原因を特定します。
- ポートのバインディングエラー:ホストのポートが他のプロセスによって使用されていないか確認します。
Dockerコミュニティとリソースの活用
- 公式ドキュメント:Dockerの公式サイトで最新の情報を確認します。
- フォーラムやQ&Aサイト:Stack OverflowやDocker Community Forumsで質問します。
図: Dockerトラブルシューティング
9. Dockerコマンドを使った実践的なプロジェクト例
簡単なWebアプリケーションのデプロイ
シンプルなWebアプリケーションをDockerでデプロイする方法を説明します。
コマンド例:
docker run -d -p 8080:80 nginx
説明: このコマンドは、Nginxコンテナをポート8080で公開します。
図: Nginxコンテナのデプロイ
開発環境の構築
Dockerを使用して開発環境をセットアップし、プロジェクトに必要なツールやライブラリを含む環境を作成します。
コマンド例:
docker run -d --name my-dev-env -v $(pwd):/workspace my-dev-image