Ubuntu で Docker コンテナをデプロイする方法

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

はじめに

この包括的な Docker チュートリアルは、開発者とシステム管理者向けに、コンテナ技術を理解し実装するための基礎的なガイドを提供します。Docker のコアコンセプト、アーキテクチャ、そして実践的な実装を学ぶことで、学習者は最新のソフトウェアデプロイメントとインフラストラクチャ管理の重要なスキルを習得します。

Docker の基礎

Docker とは何か?

Docker は、開発者が異なるコンピューティング環境でアプリケーションをパッケージ化、配布、実行を確実に実現する強力なコンテナ化技術です。現代のソフトウェア開発における基本的なツールとして、Docker はアプリケーションのデプロイを簡素化し、システム効率を高めます。

コンテナ化の核心概念

コンテナ化により、アプリケーションは独自の依存関係と共に隔離され、独立して実行できます。従来の仮想マシンとは異なり、コンテナはホストシステムのカーネルを共有するため、軽量で高速です。

graph TD A[アプリケーションコード] --> B[Docker コンテナ] B --> C[共有ホストカーネル] B --> D[隔離された環境]

Docker アーキテクチャ

コンポーネント 説明
Docker デーモン コンテナを管理するバックグラウンドサービス
Docker クライアント Docker と対話するためのコマンドラインインターフェース
Docker イメージ コンテナを作成するための読み取り専用テンプレート
Docker コンテナ Docker イメージの実行可能なインスタンス

Ubuntu 22.04 へのインストール

## パッケージインデックスを更新
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

## 安定版リポジトリを設定
echo "deb [arch=$(dpkg --print-architecture) 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:latest

## 対話型コンテナを実行
docker run -it ubuntu:latest /bin/bash

## コンテナ内で環境を確認
cat /etc/os-release

この例は、Ubuntu イメージをダウンロードし、対話型コンテナを実行する方法を示しており、Docker が隔離された環境を作成する際のシンプルさを実証しています。

コンテナの管理

コンテナライフサイクル操作

Docker は、コンテナのライフサイクルを管理するための包括的なコマンドを提供し、開発者がコンテナを作成、起動、停止、削除を効率的に行えるようにします。

graph LR A[コンテナの作成] --> B[コンテナの起動] B --> C[実行中のコンテナ] C --> D[コンテナの停止] D --> E[コンテナの削除]

必須の Docker コンテナコマンド

コマンド 機能
docker create 新しいコンテナを作成 docker create ubuntu:latest
docker start 停止したコンテナを起動 docker start container_id
docker stop 実行中のコンテナを停止 docker stop container_id
docker rm コンテナを削除 docker rm container_id
docker ps 実行中のコンテナの一覧表示 docker ps
docker ps -a すべてのコンテナの一覧表示 docker ps -a

コンテナ管理の例

## 新しいコンテナを作成
docker create --name web_server nginx:latest

## コンテナを起動
docker start web_server

## 実行中のコンテナの一覧表示
docker ps

## コンテナを停止
docker stop web_server

## コンテナを削除
docker rm web_server

コンテナリソース管理

## リソース制限付きでコンテナを実行
docker run -d \
  --name limited_container \
  --memory=512m \
  --cpus=1.5 \
  nginx:latest

この例は、コンテナのメモリと CPU 制限を設定する方法を示しており、リソースの利用を制御することを保証しています。

高度なコンテナ検査

## 詳細なコンテナ情報
docker inspect web_server

## コンテナのログ
docker logs web_server

## リアルタイムのコンテナ統計情報
docker stats web_server

高度なコンテナ技術

コンテナネットワーク設定

Docker は、複雑なアプリケーションアーキテクチャに対応する柔軟なネットワークオプションを提供します。

graph LR A[ホストネットワーク] --> B[ブリッジネットワーク] B --> C[カスタムネットワーク] C --> D[オーバーレイネットワーク]

ネットワークの種類

ネットワークタイプ 説明 使用例
ブリッジ デフォルトのネットワーク 隔離されたコンテナ間の通信
ホスト 直接ホストネットワーク 高パフォーマンスなシナリオ
オーバーレイ マルチホストネットワーク 分散システム

カスタムネットワークの作成

## カスタムネットワークを作成
docker network create --driver bridge my_custom_network

## カスタムネットワークでコンテナを実行
docker run -d \
  --name web_app \
  --network my_custom_network \
  nginx:latest

ボリューム管理

## 永続的なボリュームを作成
docker volume create app_data

## コンテナにボリュームをマウント
docker run -d \
  --name database \
  -v app_data:/var/lib/database \
  postgres:latest

Docker Compose によるコンテナオーケストレーション

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

パフォーマンス監視

## リアルタイムのコンテナメトリクス
docker stats

## コンテナのリソース使用状況
docker top container_name

## パフォーマンスプロファイリング
docker run \
  --rm \
  -it \
  --privileged \
  ubuntu:latest \
  perf top

まとめ

Docker は、アプリケーションのパッケージングとデプロイメントに革新的なアプローチを提供する、軽量で移植性が高く効率的なコンテナ化ソリューションです。Docker の基本的な技術を習得することで、開発者はワークフローを効率化し、一貫した環境を確保し、多様なコンピューティングプラットフォーム全体でシステムのスケーラビリティを高めることができます。