はじめに
Docker は、コンテナ化のための強力なプラットフォームを提供することで、ソフトウェア開発を革命的に変えました。このチュートリアルでは、最初の Docker イメージをデプロイするための必須手順をガイドし、開発者と IT 専門家が Docker コンテナの基本的な概念と実践的な実装を理解するお手伝いをします。
Docker の基礎
Docker とは何か?
Docker は、コンテナ化技術を用いてアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースプラットフォームです。開発者は、アプリケーションとその依存関係をすべて、コンテナと呼ばれる標準化された単位にパッケージ化できます。
Docker の主要な概念
コンテナ
コンテナは、アプリケーションの実行に必要なすべて(コード、ランタイム、システムツール、ライブラリ、設定)を含んだ軽量で独立した実行可能なパッケージです。
graph TD
A[アプリケーションコード] --> B[コンテナ]
C[依存関係] --> B
D[システムライブラリ] --> B
E[ランタイム環境] --> B
Docker イメージ
Docker イメージは、コンテナを作成するために使用される読み取り専用のテンプレートです。コンテナ作成の基盤となり、Docker Hub のようなレジストリに保存できます。
Docker アーキテクチャ
| コンポーネント | 説明 |
|---|---|
| Docker クライアント | Docker と対話するためのコマンドラインインターフェース |
| Docker デーモン | Docker オブジェクトを管理するバックグラウンドサービス |
| Docker レジストリ | Docker イメージの保存と配布システム |
Docker を使用する理由
- 異なる環境間の一貫性
- 軽量で高速なデプロイ
- 簡単なスケーリング
- リソースの利用効率向上
- 設定管理の簡素化
Ubuntu 22.04 への Docker インストール
Ubuntu に Docker をインストールするには、以下のコマンドを使用します。
## パッケージインデックスを更新
sudo apt update
## 依存関係をインストール
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 安定版リポジトリを設定
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
## Docker Engineをインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Docker インストールの確認
インストール後、Docker が正しく動作していることを確認します。
## Dockerのバージョンを確認
docker --version
## hello-worldコンテナを実行
sudo docker run hello-world
Docker ワークフロー
graph LR
A[開発] --> B[イメージのビルド]
B --> C[レジストリへのプッシュ]
C --> D[イメージのプル]
D --> E[コンテナの実行]
LabEx の開始
LabEx は、開発者がコンテナ化技術をより効果的に練習し理解するのを支援する、インタラクティブな Docker 学習環境を提供します。
環境設定
システム要件
Docker 環境を設定する前に、システムが以下の要件を満たしていることを確認してください。
| 要件 | 仕様 |
|---|---|
| オペレーティングシステム | Ubuntu 22.04 LTS |
| CPU | 64 ビットプロセッサ |
| RAM | 最低 4GB |
| ストレージ | 20GB の空きディスク容量 |
システムの準備
システムパッケージの更新
sudo apt update
sudo apt upgrade -y
必要な依存関係のインストール
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common
Docker インストール方法
graph LR
A[Dockerのインストール] --> B[リポジトリからのインストール]
A --> C[手動パッケージインストール]
A --> D[スクリプトベースのインストール]
リポジトリからのインストール (推奨)
Docker の公式 GPG キーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
リポジトリを設定
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker パッケージのインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
インストール後の設定
ユーザーを Docker グループに追加
sudo usermod -aG docker $USER
Docker を起動時に自動実行するように設定
sudo systemctl enable docker
sudo systemctl start docker
インストールの検証
Docker のバージョンを確認
docker --version
docker compose version
Hello World コンテナを実行
sudo docker run hello-world
Docker Compose の設定
Docker Compose のインストール
sudo apt install docker-compose
推奨ツール
| ツール | 目的 |
|---|---|
| Docker Desktop | Docker 管理のための GUI |
| Visual Studio Code | Docker 拡張機能付き IDE |
| Docker Hub | コンテナイメージリポジトリ |
LabEx 環境推奨
LabEx は、設定と学習を簡素化する事前構成済みの Docker 環境を提供し、コンテナ化技術を始める初心者に役立ちます。
インストール時の一般的な問題のトラブルシューティング
潜在的な問題
- システムアーキテクチャの互換性がない
- システムパッケージが古い
- 権限不足
- ネットワーク接続の問題
推奨される解決策
- システムが最低限の要件を満たしていることを確認する
- システムパッケージを定期的に更新する
- インターネット接続を確認する
- ユーザー権限を確認する
- 公式 Docker ドキュメントを参照する
最初のコンテナデプロイ
コンテナデプロイの理解
コンテナデプロイワークフロー
graph LR
A[イメージの選択] --> B[イメージのプル]
B --> C[コンテナの作成]
C --> D[コンテナの起動]
D --> E[コンテナの管理]
Docker イメージのプル
公式 Docker Hub イメージ
## Ubuntu イメージのプル
docker pull ubuntu:latest
## Nginx Webサーバーイメージのプル
docker pull nginx:latest
## Python 開発イメージのプル
docker pull python:3.9
最初のコンテナの実行
基本的なコンテナ実行
## Ubuntu コンテナの実行
docker run -it ubuntu:latest /bin/bash
## Nginx Webサーバーの実行
docker run -d -p 8080:80 nginx:latest
## Python インタラクティブコンテナの実行
docker run -it python:3.9 python
コンテナ管理コマンド
| コマンド | 説明 |
|---|---|
docker ps |
実行中のコンテナ一覧 |
docker ps -a |
全てのコンテナ一覧 |
docker start <container_id> |
停止中のコンテナ起動 |
docker stop <container_id> |
実行中のコンテナ停止 |
docker rm <container_id> |
コンテナ削除 |
カスタムコンテナの作成
Dockerfile の例
## 公式 Python ベースイメージを使用
FROM python:3.9
## 作業ディレクトリを設定
WORKDIR /app
## アプリケーションファイルをコピー
COPY . /app
## 依存関係をインストール
RUN pip install flask
## ポート公開
EXPOSE 5000
## 起動コマンドを定義
CMD ["python", "app.py"]
カスタムイメージのビルドと実行
## Docker イメージのビルド
docker build -t myapp:v1 .
## カスタムコンテナの実行
docker run -p 5000:5000 myapp:v1
コンテナのネットワーク
graph TD
A[コンテナ] -->|ポートマッピング| B[ホストネットワーク]
B -->|サービス公開| C[外部アクセス]
ポートマッピングの例
## コンテナポート80をホストポート8080にマッピング
docker run -d -p 8080:80 nginx:latest
コンテナボリューム
ボリューム管理
## 名前付きボリュームを作成
docker volume create mydata
## ボリュームをコンテナにマウント
docker run -v mydata:/data ubuntu:latest
最良のプラクティス
- 公式イメージを使用する
- イメージサイズを最小限にする
- マルチステージビルドを実装する
- 特定のイメージタグを使用する
- ルートユーザーとしてコンテナを実行しない
コンテナの監視
## コンテナログの表示
## リソース使用状況の監視
## コンテナ詳細の確認
LabEx 学習環境
LabEx は、実践的なコンテナデプロイ技術を学ぶためのインタラクティブな Docker ラボを提供します。
高度なデプロイ技術
| 技術 | 説明 |
|---|---|
| Docker Compose | マルチコンテナオーケストレーション |
| Kubernetes | コンテナのスケーリングと管理 |
| Docker Swarm | ネイティブ Docker クラスタリング |
まとめ
このチュートリアルを完了することで、Docker コンテナ化に関する貴重な知識を得て、Docker 環境の設定方法を学び、最初のコンテナを正常にデプロイすることができました。これらの基礎的なスキルは、Docker の機能をより複雑なアプリケーションのデプロイと管理に活用できるようになり、実世界のシナリオで役立ちます。



