はじめに
Docker CLI は、開発者がコマンドラインインタフェースを通じて Docker コンテナ、イメージ、ネットワークと対話するための強力なツールです。この包括的なチュートリアルでは、コンテナの効率的な管理と操作方法、堅牢な開発環境の構築方法、コンテナ化ワークフローの最適化方法について、Docker CLI の基本的なテクニックを指導します。
Docker CLI の基礎
Docker CLI とは?
Docker コマンドラインインタフェース (CLI) は、Docker デーモンと対話し、コンテナ、イメージ、ネットワーク、ボリュームを管理するための強力なツールです。テキストベースのインタフェースを提供し、Docker コマンドを実行し、様々な操作を行うことができます。
インストールと設定
Docker CLI を使用する前に、Ubuntu 22.04 システムに Docker がインストールされていることを確認してください。
## パッケージインデックスを更新
sudo apt update
## Docker をインストール
sudo apt install docker.io
## インストールを確認
docker --version
Docker CLI の基本構造
Docker CLI コマンドは標準的な構文に従います。
docker <オブジェクト> <コマンド> <オプション>
コマンドのカテゴリ
| カテゴリ | 目的 |
|---|---|
| 管理コマンド | Docker オブジェクトの管理 |
| イメージコマンド | イメージのプル、ビルド、管理 |
| コンテナコマンド | コンテナの作成、実行、制御 |
| ネットワークコマンド | Docker ネットワークの設定 |
| ボリュームコマンド | 永続的なデータストレージの管理 |
認証と権限
graph TD
A[ユーザー] --> B{Docker CLI}
B --> |sudoが必要| C[ルート権限]
B --> |ユーザーグループ| D[Docker グループアクセス]
すべてのコマンドで sudo を使用しないようにするには、ユーザーを docker グループに追加します。
## 現在のユーザーを docker グループに追加
sudo usermod -aG docker $USER
## セッションを再起動
newgrp docker
Docker CLI の設定
設定ファイルは通常以下の場所に配置されています。
/etc/docker/daemon.json(システム全体)~/.docker/config.json(ユーザー固有)
主要な概念
- Docker デーモン: Docker オブジェクトを管理するバックグラウンドサービス
- Docker クライアント: デーモンと対話するための CLI ツール
- Docker オブジェクト: イメージ、コンテナ、ネットワーク、ボリューム
これらの基本を理解することで、ユーザーはコンテナ化タスクに Docker CLI を効果的に活用できます。LabEx は、Docker の管理に関する確かな基礎を築くために、これらの基本的なコマンドの実践を推奨します。
コモン Docker コマンド
イメージ管理コマンド
イメージのプル
## Docker Hub からイメージをプル
docker pull ubuntu:latest
docker pull nginx:1.21
イメージのリスト表示
## ローカルにあるすべてのイメージをリスト表示
docker images
docker image ls
イメージのビルド
## Dockerfile からイメージをビルド
docker build -t myapp:v1 .
コンテナ操作
コンテナの実行
## 新しいコンテナを実行
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
コンテナ管理コマンド
| コマンド | 説明 | 例 |
|---|---|---|
docker ps |
実行中のコンテナのリスト | docker ps |
docker ps -a |
すべてのコンテナのリスト | docker ps -a |
docker start |
停止したコンテナの起動 | docker start web-server |
docker stop |
実行中のコンテナの停止 | docker stop web-server |
docker rm |
コンテナの削除 | docker rm web-server |
ネットワークコマンド
graph TD
A[Docker ネットワークコマンド]
A --> B[ネットワークの作成]
A --> C[ネットワークのリスト表示]
A --> D[ネットワークの詳細表示]
ネットワーク操作
## カスタムネットワークの作成
docker network create mynetwork
## ネットワークのリスト表示
docker network ls
## コンテナをネットワークに接続
docker network connect mynetwork web-server
ボリューム管理
## ボリュームの作成
docker volume create mydata
## ボリュームのリスト表示
docker volume ls
## コンテナにボリュームのマウント
docker run -v mydata:/app nginx
デバッグと検査
## コンテナのログの表示
docker logs web-server
## 実行中のコンテナでコマンドを実行
docker exec -it web-server bash
## コンテナの詳細の検査
docker inspect web-server
高度なコマンド
クリーンアップ
## 使用されていないイメージの削除
docker image prune
## 停止したすべてのコンテナの削除
docker container prune
最良のプラクティス
- 常に具体的なイメージタグを使用する
- 不要なコンテナとイメージを削除する
- ボリュームを使用して永続的なデータを保存する
- ネットワークの分離を活用する
LabEx は、これらの一般的な Docker CLI コマンドを習得することで、コンテナ化された環境を効率的に管理することを推奨します。
CLI ワークフローパターン
開発ワークフロー
graph TD
A[コード開発] --> B[Docker イメージのビルド]
B --> C[コンテナのテスト]
C --> D[レジストリへのプッシュ]
D --> E[コンテナのデプロイ]
典型的な開発サイクル
## プロジェクトをクローン
git clone https://github.com/example/project
## Dockerfile を作成
touch Dockerfile
## イメージをビルド
docker build -t myapp:dev .
## テスト用コンテナを実行
docker run -d --name test-container myapp:dev
継続的インテグレーションワークフロー
ビルドとテスト
## ビルド引数を使用してイメージをビルド
docker build --build-arg ENV=development -t myapp:ci .
## 自動化されたテストを実行
docker run --rm myapp:ci npm test
コンテナライフサイクル管理
ワークフロー段階
| 段階 | Docker コマンド | 目的 |
|---|---|---|
| ビルド | docker build |
イメージの作成 |
| テスト | docker run |
コンテナの検証 |
| プッシュ | docker push |
イメージの共有 |
| デプロイ | docker run |
プロダクションでの実行 |
マルチコンテナデプロイ
Docker Compose ワークフロー
## docker-compose.yml でサービスを定義
version: '3'
services:
web:
build: .
ports:
- "8000:80"
database:
image: postgres:latest
## マルチコンテナ環境を起動
docker-compose up -d
マイクロサービスパターン
graph TD
A[API サービス] --> B[データベース サービス]
A --> C[キャッシュ サービス]
A --> D[認証サービス]
サービス管理
## マイクロサービス用のネットワークを作成
docker network create microservices-net
## ネットワーク接続を使用してサービスを実行
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb
デバッグワークフロー
トラブルシューティング手順
## コンテナログを検査
docker logs api-service
## 対話型シェルを実行
docker exec -it api-service /bin/bash
## コンテナのリソース使用量を確認
docker stats api-service
プロダクションデプロイワークフロー
イメージタグ付け戦略
## プロダクション用のイメージにタグを付ける
docker tag myapp:latest myregistry.com/myapp:v1.0
## プライベートレジストリにプッシュ
docker push myregistry.com/myapp:v1.0
## プロダクションでプルして実行
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0
最良のプラクティス
- 具体的なイメージタグを使用する
- マルチステージビルドを実装する
- イメージサイズを最小限にする
- Docker Compose を複雑なセットアップに活用する
LabEx は、これらのワークフローパターンを実践することで、Docker コンテナの管理とデプロイプロセスを効率化することを推奨します。
まとめ
Docker CLI コマンドとワークフローパターンを習得することで、開発者はコンテナ管理スキルを大幅に向上させることができます。このチュートリアルでは、Docker コンテナを操作、作成、管理、最適化するための基本的な技術を習得し、現代のソフトウェア開発およびデプロイシナリオで Docker の潜在能力を最大限に活用できるよう装備しました。



