Docker コンテナを効率的に構築および実行する方法

DockerBeginner
オンラインで実践に進む

はじめに

この包括的な Docker チュートリアルは、開発者と IT 専門家を対象に、Docker コンテナの理解、インストール、および管理に関する実践的なガイドを提供します。コアのコンテナ化概念の探求から、必須の Docker コマンドの実演まで、このチュートリアルは、コンテナ技術とそのさまざまなコンピューティング環境への実装を習得するための構造化されたアプローチを提供します。

Docker コンテナの概要

Docker コンテナとは?

Docker コンテナは、アプリケーションを実行するために必要なすべて(コード、ランタイム、システムツール、ライブラリ、設定)が含まれた、軽量で独立した実行可能パッケージです。コンテナ化技術により、開発者は異なるコンピューティングプラットフォーム間で一貫した環境を作成できます。

コンテナ化の核心概念

graph TD
    A[アプリケーションコード] --> B[コンテナイメージ]
    B --> C[Docker コンテナ]
    C --> D[隔離されたランタイム環境]
キーコンポーネント 説明
コンテナイメージ アプリケーションと依存関係を含む不変のテンプレート
コンテナランタイム コンテナ化されたアプリケーションを実行する環境
ネームスペース隔離 プロセスとネットワークの分離を提供

Ubuntu 22.04 への Docker インストール

## システムパッケージの更新
sudo apt update

## 必要な依存関係のインストール
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Docker の公式 GPG キーの追加
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Docker リポジトリの設定
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Docker エンジンのインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

基本的な Docker コンテナ操作

## Ubuntu コンテナイメージのプル
docker pull ubuntu:22.04

## 対話型の Ubuntu コンテナの実行
docker run -it ubuntu:22.04 /bin/bash

## 実行中のコンテナのリスト表示
docker ps

## 全てのコンテナのリスト表示
docker ps -a

Docker コンテナの利点

コンテナ化は、現代のソフトウェア開発に大きなメリットを提供します。

  • 一貫した開発環境と本番環境
  • 素早いデプロイとスケーリング
  • 効率的なリソース利用
  • 異なるプラットフォーム間の優れた移植性

Docker exec コマンドガイド

Docker exec コマンドの理解

docker exec コマンドは、実行中のコンテナと直接対話することを可能にし、管理者や開発者がコマンドを実行、プロセスを管理、コンテナ環境をトラブルシューティングできます。

graph LR
    A[Docker ホスト] --> B[実行中のコンテナ]
    B --> |docker exec| C[コマンド実行]

基本的な Docker exec の構文

コマンドオプション 説明 使用例
-it 対話型端末 対話型の命令を実行
-d デタッチモード バックグラウンドでのコマンド実行
-u ユーザー指定 特定のユーザーとしてコマンド実行

よくある exec コマンドのシナリオ

## 実行中のコンテナのシェルに入力
docker exec -it container_name /bin/bash

## コンテナ内で単一のコマンドを実行
docker exec container_name ls /app

## 特定のユーザーとしてコマンドを実行
docker exec -u root container_name whoami

## バックグラウンドプロセスを実行
docker exec -d container_name python script.py

高度な exec テクニック

## 実行中のコンテナにファイルのコピー
docker exec container_name mkdir /new_directory

## 複数の命令を実行
docker exec container_name sh -c "apt update && apt install python3"

## コンテナ内のプロセスの状態を確認
docker exec container_name ps aux

セキュリティに関する考慮事項

docker exec の適切な使用には、コンテナの隔離と潜在的なセキュリティ上の影響を理解することが必要です。常にコマンドの実行権限を検証し、制限してください。

実践的な Docker ワークフロー

コンテナ開発ライフサイクル

graph LR
    A[開発] --> B[イメージビルド]
    B --> C[コンテナテスト]
    C --> D[デプロイ]
    D --> E[監視]

Docker Compose ワークフロー

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: mysecretpassword

コンテナデバッグテクニック

デバッグコマンド 目的
docker logs コンテナログの表示
docker inspect 詳細なコンテナメタデータの取得
docker stats リソース消費量の確認

パフォーマンス監視コマンド

## リアルタイムコンテナリソース追跡
docker stats

## コンテナ設定の確認
docker inspect container_name

## コンテナログの表示 (継続的)
docker logs -f container_name

コンテナネットワークのトラブルシューティング

## Docker ネットワークのリスト表示
docker network ls

## ネットワーク設定の確認
docker network inspect bridge

## カスタムネットワークの作成
docker network create myapp_network

イメージ管理ワークフロー

## カスタムイメージのビルド
docker build -t myapp:v1 .

## レジストリへのプッシュ
docker push myusername/myapp:v1

## 不要なイメージの削除
docker image prune

コンテナオーケストレーションの例

## アプリケーションコンテナのスケーリング
docker-compose up -d --scale web=3

## ロールアップアップデートデプロイ
docker-compose up -d --no-deps --build web

まとめ

Docker コンテナは、現代のソフトウェア開発において強力なソリューションを提供します。一貫性があり、移植性が高く、効率的な実行環境を提供します。コンテナの基本、インストール手順、基本的な操作を理解することで、開発者はコンテナ化を活用してアプリケーションのデプロイを効率化し、リソース利用率を向上させ、よりスケーラブルで柔軟なソフトウェアインフラストラクチャを構築できます。