タイトル: 初心者から上級者まで学べるDockerコマンド完全ガイド



1. Dockerとは?基本概念の解説

Dockerの概要

Dockerは、アプリケーションのデプロイメントを簡素化するためのコンテナ化プラットフォームです。コンテナはアプリケーションとその依存関係を含み、開発から本番環境まで一貫した動作を保証します。

図: Dockerのアーキテクチャ

コンテナとイメージの違い

  • イメージ:静的なファイルシステムのスナップショットであり、アプリケーションの実行環境を構成します。
  • コンテナ:イメージから作成される実行時のインスタンスで、プロセスが実行される環境です。

図: イメージとコンテナの関係

Image vs Container

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 stopdocker kill:コンテナの停止

  • docker stop:コンテナをまず正常にコンテナを停止しようとしますが、タイムアウト後には強制停止される可能性もあります。 コマンド例:
  docker stop [CONTAINER_ID]
  • docker kill:即時にコンテナを停止します。強制終了。 コマンド例:
  docker kill [CONTAINER_ID]

docker rm:コンテナの削除

停止したコンテナを削除します。

コマンド例:

docker rm [CONTAINER_ID]

docker imagesdocker 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からイメージを作成する流れ

Build Image

docker pulldocker 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 swarmdocker 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

コメントを残す