初めての Docker イメージのデプロイ方法

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

はじめに

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 を使用する理由

  1. 異なる環境間の一貫性
  2. 軽量で高速なデプロイ
  3. 簡単なスケーリング
  4. リソースの利用効率向上
  5. 設定管理の簡素化

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 環境を提供し、コンテナ化技術を始める初心者に役立ちます。

インストール時の一般的な問題のトラブルシューティング

潜在的な問題

  • システムアーキテクチャの互換性がない
  • システムパッケージが古い
  • 権限不足
  • ネットワーク接続の問題

推奨される解決策

  1. システムが最低限の要件を満たしていることを確認する
  2. システムパッケージを定期的に更新する
  3. インターネット接続を確認する
  4. ユーザー権限を確認する
  5. 公式 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

最良のプラクティス

  1. 公式イメージを使用する
  2. イメージサイズを最小限にする
  3. マルチステージビルドを実装する
  4. 特定のイメージタグを使用する
  5. ルートユーザーとしてコンテナを実行しない

コンテナの監視

## コンテナログの表示

## リソース使用状況の監視

## コンテナ詳細の確認

LabEx 学習環境

LabEx は、実践的なコンテナデプロイ技術を学ぶためのインタラクティブな Docker ラボを提供します。

高度なデプロイ技術

技術 説明
Docker Compose マルチコンテナオーケストレーション
Kubernetes コンテナのスケーリングと管理
Docker Swarm ネイティブ Docker クラスタリング

まとめ

このチュートリアルを完了することで、Docker コンテナ化に関する貴重な知識を得て、Docker 環境の設定方法を学び、最初のコンテナを正常にデプロイすることができました。これらの基礎的なスキルは、Docker の機能をより複雑なアプリケーションのデプロイと管理に活用できるようになり、実世界のシナリオで役立ちます。