はじめに
Docker は、コンテナ化のための強力なプラットフォームを提供することで、ソフトウェア開発を革命的に変えました。この包括的なチュートリアルでは、Docker のコマンドの基本的な使い方を解説し、開発者とシステム管理者が Docker コンテナ、イメージ、ネットワークを効率的に管理する方法を理解するお手伝いをします。Docker のスキルを習得したい初心者の方や、スキルを復習したい方にとっても、このガイドは Docker のコマンドラインインターフェースの使用に関する実践的な洞察を提供します。
Docker の基本概念
Docker とは何か?
Docker は、コンテナ化を通じてアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースプラットフォームです。開発者は、アプリケーションとその依存関係をすべて、標準化された単位であるコンテナにパッケージ化できます。これにより、さまざまなコンピューティング環境で一貫した動作を実現できます。
Docker の主要な概念
1. コンテナ
コンテナは、アプリケーションの実行に必要なすべて (コード、ランタイム、システムツール、システムライブラリ、設定) を含む軽量で独立した実行可能なパッケージです。
graph LR
A[アプリケーションコード] --> B[コンテナ]
C[依存関係] --> B
D[システムライブラリ] --> B
E[設定] --> B
2. イメージ
Docker イメージは、コンテナを作成するために使用される読み取り専用のテンプレートです。コンテナ作成の設計図として機能し、Docker Hub などのレジストリに保存できます。
3. Dockerfile
Dockerfile は、Docker イメージのビルド手順を含むテキストドキュメントです。アプリケーションの環境、依存関係、設定を定義します。
Dockerfile の例:
FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y python3
COPY . /app
WORKDIR /app
CMD ["python3", "app.py"]
4. Docker アーキテクチャ
graph TB
A[Docker クライアント] --> B[Docker デーモン]
B --> C[コンテナランタイム]
B --> D[イメージレジストリ]
B --> E[イメージストレージ]
5. コンテナと仮想マシン
| 機能 | コンテナ | 仮想マシン |
|---|---|---|
| リソース使用量 | 軽量 | 巨大 |
| 起動時間 | 数秒 | 数分 |
| 隔離レベル | プロセスレベル | OS レベル |
| パフォーマンス | 高速 | 低速 |
Docker の利点
- 環境間の一貫性
- デプロイの高速化
- スケーラビリティの向上
- リソース利用率の改善
- 依存関係管理の簡素化
使用例
- マイクロサービスアーキテクチャ
- CI/CD (継続的インテグレーション/継続的デリバリー)
- クラウドネイティブアプリケーション開発
- アプリケーションテストの簡素化
LabEx を使用して始める
LabEx は、開発者がコンテナ化技術を迅速に理解し、実践するためのインタラクティブな Docker 学習環境を提供します。
Docker インストールガイド
前提条件
Docker をインストールする前に、Ubuntu 22.04 システムが以下の要件を満たしていることを確認してください。
- 64 ビットオペレーティングシステム
- カーネルバージョン 3.10 以上
- 十分なシステムリソース
インストール方法
1. リポジトリを使用してインストール
ステップ 1: パッケージインデックスを更新
sudo apt-get update
ステップ 2: 必要なパッケージをインストール
sudo apt update
sudo apt-get install ca-certificates curl gnupg lsb-release
ステップ 3: Docker の公式 GPG キーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
ステップ 4: Docker リポジトリを設定
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
ステップ 5: Docker エンジンをインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2. インストールの検証
sudo docker --version
sudo docker run hello-world
インストールフロー
graph TD
A[システムの更新] --> B[依存関係のインストール]
B --> C[GPG キーの追加]
C --> D[リポジトリの設定]
D --> E[Docker のインストール]
E --> F[インストールの検証]
インストール後の手順
1. 非ルートユーザーとして Docker を管理
sudo usermod -aG docker $USER
newgrp docker
2. ブート時に Docker が起動するように設定
sudo systemctl enable docker
sudo systemctl start docker
Docker インストールオプション
| 方法 | 利点 | 欠点 |
|---|---|---|
| リポジトリ | 更新が容易 | インターネット接続が必要 |
| 公式パッケージ | 直接制御 | 手動更新が必要 |
| スクリプトインストール | 設定が迅速 | セキュリティが低い |
よくある問題のトラブルシューティング
- システムの互換性を確認する
- ネットワーク接続を確認する
- ディスク容量が十分であることを確認する
- システムパッケージを定期的に更新する
LabEx Docker 学習環境
LabEx は、開発者がコンテナ化技術を迅速かつ効果的に習得するための、インタラクティブな Docker インストールチュートリアルと実践環境を提供します。
推奨システム要件
| コンポーネント | 最低仕様 |
|---|---|
| CPU | 2 コア |
| RAM | 4 GB |
| ディスク容量 | 20 GB |
| OS | Ubuntu 22.04 LTS |
基本 Docker コマンド
Docker コマンド構造
Docker コマンドは標準的な構文に従います。
docker [command] [options] [arguments]
イメージ管理コマンド
1. イメージのプル
docker pull ubuntu:latest
docker pull nginx:alpine
2. イメージのリスト
docker images
docker image ls
3. イメージの削除
docker rmi ubuntu:latest
docker image rm nginx:alpine
コンテナ管理コマンド
1. コンテナの作成と実行
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
2. コンテナのリスト
docker ps ## 実行中のコンテナ
docker ps -a ## 全てのコンテナ
3. コンテナの起動、停止、再起動
docker start web-server
docker stop web-server
docker restart web-server
4. コンテナの削除
docker rm web-server
docker container prune ## 停止した全てのコンテナを削除
コンテナ操作コマンド
1. コンテナ内でのコマンド実行
docker exec -it web-server bash
docker exec web-server ls /var/www/html
2. コンテナログの表示
docker logs web-server
docker logs -f web-server ## ログ出力の追跡
Docker ワークフロー
graph TD
A[イメージのプル] --> B[コンテナの作成]
B --> C[コンテナの起動]
C --> D[操作/実行]
D --> E[コンテナの停止]
E --> F[コンテナの削除]
高度な Docker コマンド
1. カスタムイメージのビルド
docker build -t myapp:v1 .
2. Docker ボリューム
docker volume create myvolume
docker run -v myvolume:/app nginx
3. ネットワーク管理
docker network create mynetwork
docker run --network mynetwork nginx
一般的な Docker コマンドのカテゴリ
| カテゴリ | 目的 | 例のコマンド |
|---|---|---|
| イメージ管理 | Docker イメージの管理 | pull, push, build |
| コンテナ管理 | コンテナの制御 | run, start, stop |
| システム管理 | Docker システム情報 | info, version |
| ネットワーク管理 | ネットワークの管理 | network create |
| ボリューム管理 | 永続的なデータの管理 | volume create |
最良のプラクティス
- 特定のイメージタグを使用する
- 使用されていないリソースをクリーンアップする
- Docker Compose を複雑なセットアップに使用
- マルチステージビルドを実装する
LabEx Docker 学習
LabEx は、これらの Docker コマンドの実践のためのインタラクティブな環境を提供し、開発者が効率的にコンテナ化スキルを習得するのを支援します。
役立つ Docker コマンドオプション
| オプション | 説明 | 例 |
|---|---|---|
-d |
デタッチモード | docker run -d nginx |
-it |
インタラクティブ端末 | docker run -it ubuntu |
--name |
コンテナの名前指定 | docker run --name web nginx |
-p |
ポートマッピング | docker run -p 8080:80 nginx |
まとめ
これらの基本的な Docker コマンドを習得することで、コンテナの管理とデプロイに必要な重要なスキルを身につけることができました。Docker は、さまざまな環境でコンテナを作成、実行、管理するための強力なソリューションを提供します。Docker の機能をさらに探求するにつれて、これらの基本的なコマンドが効率的なコンテナ化戦略の基盤であることを覚えておいてください。これらのコマンドを練習し、実験することで、Docker テクノロジーを習得し、開発ワークフローを効率化できます。



