Docker入門ガイド:アプリケーションのコンテナ化をすぐに始める

2/18/2026
2 min read

Docker入門ガイド:アプリケーションのコンテナ化をすぐに始める

Dockerは、現代のソフトウェア開発とデプロイメントにおいて不可欠な一部となっています。 Kubernetesに関する議論が広範囲に及んでいますが、Dockerは依然として多くの企業がアプリケーションを構築、テスト、およびデプロイするために好んで使用するツールです。 この記事では、Dockerをすぐに始めるために、そのコアコンセプトを理解し、アプリケーションのコンテナ化を始めるのに役立つ実用的な例を提供します。

Dockerのコアコンセプト

実践を始める前に、Dockerのいくつかのコアコンセプトを理解することが重要です。

  • イメージ (Image): イメージは読み取り専用のテンプレートであり、アプリケーションの実行に必要なすべてのもの(コード、ランタイム環境、システムツール、ライブラリ、および依存関係)が含まれています。 仮想マシンイメージに似ていますが、より軽量です。

  • コンテナ (Container): コンテナはイメージから作成された実行中のインスタンスです。 これはイメージのランタイムインスタンスであり、アプリケーションとそのすべての依存関係が含まれています。 コンテナは互いに分離されており、独自のファイルシステム、プロセス、およびネットワーク空間を持っています。

  • Docker Hub: Docker Hubは、パブリックなイメージリポジトリであり、事前に構築されたイメージをダウンロードしたり、独自のイメージをアップロードしたりできます。 GitHubに似ていますが、Dockerイメージ専用です。

  • Dockerfile: Dockerfileは、Dockerイメージを構築するためのすべての命令を含むテキストファイルです。 Dockerfileを作成することで、イメージの作成プロセスを自動化できます。

  • Docker Compose: Docker Composeは、マルチコンテナDockerアプリケーションを定義および実行するためのツールです。 これにより、YAMLファイルを使用してアプリケーションのサービスを構成し、単一のコマンドを使用してすべてのサービスを開始または停止できます。

Dockerのインストール

まず、Dockerをインストールする必要があります。 Dockerは、さまざまなオペレーティングシステム用のインストールパッケージを提供しています。 Dockerの公式ウェブサイトにアクセスし、対応する指示に従ってインストールしてください。

インストールが完了したら、docker --versionコマンドを実行して、Dockerが正しくインストールされていることを確認できます。

簡単なPythonアプリケーションのコンテナ化

簡単なPythonアプリケーションを作成し、Dockerを使用してコンテナ化します。

1. Pythonアプリケーションの作成

app.pyという名前のファイルを作成し、次のコードを含めます。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

この簡単なFlaskアプリケーションは、ルートパス/で"Hello, Docker!"を返します。

2. requirements.txtファイルの作成

アプリケーションはFlaskライブラリに依存しているため、これらの依存関係を宣言するためにrequirements.txtファイルを作成する必要があります。

Flask

3. Dockerfileの作成

Dockerfileという名前のファイルを作成し、次の内容を追加します。

# 公式のPythonイメージをベースイメージとして使用します
FROM python:3.9-slim-buster

# 作業ディレクトリを設定します
WORKDIR /app

# requirements.txtファイルを作業ディレクトリにコピーします
COPY requirements.txt .

# 依存関係をインストールします
RUN pip install --no-cache-dir -r requirements.txt
```# アプリケーションコードをワーキングディレクトリにコピー
COPY app.py .

# ポート 5000 を公開
EXPOSE 5000

# 起動コマンドを定義
CMD ["python", "app.py"]

Dockerfile の説明:

  • FROM python:3.9-slim-buster: ベースイメージを Python 3.9 のスリム版として指定します。
  • WORKDIR /app: コンテナ内のワーキングディレクトリを /app に設定します。
  • COPY requirements.txt .: 現在のディレクトリにある requirements.txt ファイルをコンテナの /app ディレクトリにコピーします。
  • RUN pip install --no-cache-dir -r requirements.txt: コンテナ内で pip コマンドを実行し、requirements.txt ファイルで指定された依存関係をインストールします。--no-cache-dir パラメータはイメージのサイズを小さくすることができます。
  • COPY app.py .: 現在のディレクトリにある app.py ファイルをコンテナの /app ディレクトリにコピーします。
  • EXPOSE 5000: コンテナが 5000 ポートをリッスンすることを宣言します。
  • CMD ["python", "app.py"]: コンテナ起動時に実行するコマンドを定義します。

4. Docker イメージの構築

Dockerfile を含むディレクトリで、次のコマンドを実行して Docker イメージを構築します。

docker build -t my-python-app .
  • docker build: イメージを構築するコマンド。
  • -t my-python-app: イメージに名前 (my-python-app) を指定します。
  • .: Dockerfile があるディレクトリ (現在のディレクトリ) を指定します。

構築プロセスには、ネットワーク速度と依存関係のサイズに応じて、時間がかかる場合があります。

5. Docker コンテナの実行

次のコマンドを使用して Docker コンテナを実行します。

docker run -d -p 5000:5000 my-python-app
  • docker run: コンテナを実行するコマンド。
  • -d: デタッチモードでコンテナを実行します (バックグラウンドで実行)。
  • -p 5000:5000: ホストマシンの 5000 ポートをコンテナの 5000 ポートにマッピングします。
  • my-python-app: 使用するイメージ名を指定します。

6. アプリケーションの検証

ブラウザで http://localhost:5000 にアクセスすると、"Hello, Docker!" が表示されるはずです。

7. コンテナの停止と削除

次のコマンドを使用してコンテナを停止します。

docker stop 

`` は docker ps コマンドで確認できます。

次のコマンドを使用してコンテナを削除します。

docker rm 

Docker Compose 入門

アプリケーションが複数のサービスで構成されている場合は、Docker Compose を使用してそれらを管理できます。

1. docker-compose.yml ファイルの作成

docker-compose.yml という名前のファイルを作成し、次の内容を追加します。

version: "3.9"
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"

docker-compose.yml の説明:* version: "3.9": Docker Composeファイルのバージョンを指定します。

  • services: アプリケーションのサービスを定義します。
  • web: "web"という名前のサービスを定義します。
  • image: my-python-app: サービスが使用するイメージを指定します。
  • ports: ポートマッピングを定義します。

2. アプリケーションの起動

docker-compose.ymlファイルを含むディレクトリで、以下のコマンドを実行してアプリケーションを起動します。

docker-compose up -d
  • docker-compose up: アプリケーションを起動するコマンドです。
  • -d: デタッチモードでコンテナを実行します。

3. アプリケーションの停止

以下のコマンドを使用してアプリケーションを停止します。

docker-compose down

Dockerのセキュリティベストプラクティス

議論からわかるように、Dockerイメージのセキュリティは重要な問題です。以下は、Dockerのセキュリティに関するベストプラクティスです。

  • 公式イメージの使用: 可能な限り、公式が提供するイメージを使用してください。これらのイメージは通常、セキュリティスキャンとメンテナンスが行われています。
  • イメージの脆弱性スキャン: Trivyなどのツールを使用して、イメージ内の既知の脆弱性をスキャンし、イメージをタイムリーに更新します。
  • 最小権限の原則の使用: rootユーザーとしてコンテナを実行することを避けてください。
  • コンテナリソースの制限: cgroupsを使用して、コンテナのCPUとメモリの使用量を制限します。
  • イメージの定期的な更新: イメージを最新の状態に保ち、セキュリティ脆弱性を修正します。
  • セキュリティスキャンツールの使用: Snyk、ClairなどのツールをCI/CDプロセスに統合して、イメージの脆弱性を自動的にスキャンできます。

結論この記事では、Dockerのクイックスタートガイドを提供し、コアコンセプト、インストール手順、および簡単なPythonアプリケーションのコンテナ化の例を網羅しています。これらの基礎知識を学ぶことで、Dockerを使用してアプリケーションを構築、テスト、およびデプロイできるようになります。覚えておくべきは、セキュリティが非常に重要であるということです。常にDockerイメージのセキュリティに注意し、アプリケーションを保護するための適切な対策を講じてください。Kubernetesは大規模なコンテナオーケストレーションにおいて強力ですが、Dockerは多くのシナリオで依然としてシンプルで効果的なソリューションです。Dockerを習得することで、現代のソフトウェア開発とデプロイメントの課題により良く対応できるようになります。

Published in Technology

You Might Also Like

クラウドコンピューティング技術の使用方法:最初のクラウドインフラストラクチャ構築の完全ガイドTechnology

クラウドコンピューティング技術の使用方法:最初のクラウドインフラストラクチャ構築の完全ガイド

クラウドコンピューティング技術の使用方法:最初のクラウドインフラストラクチャ構築の完全ガイド はじめに デジタルトランスフォーメーションの加速に伴い、クラウドコンピューティングは企業や開発者の選択肢として人気を集めています。クラウドコンピュ...

警告!Claude Codeの父が言う:1ヶ月後にPlan Modeを使わなくなり、ソフトウェアエンジニアの肩書きが消えるTechnology

警告!Claude Codeの父が言う:1ヶ月後にPlan Modeを使わなくなり、ソフトウェアエンジニアの肩書きが消える

警告!Claude Codeの父が言う:1ヶ月後にPlan Modeを使わなくなり、ソフトウェアエンジニアの肩書きが消える 最近、YCの円卓インタビューがテクノロジー界で話題になっています——Claude Codeの創設者Boris Ch...

2026年 Top 10 深度学习资源推荐Technology

2026年 Top 10 深度学习资源推荐

2026年 Top 10 深度学习リソース推薦 深層学習がさまざまな分野で急速に発展する中、ますます多くの学習リソースやツールが登場しています。この記事では、2026年に注目すべき10の深層学習リソースを推薦し、この分野での迅速な成長を支援...

2026年 Top 10 AI 代理:核心卖点解析Technology

2026年 Top 10 AI 代理:核心卖点解析

2026年 Top 10 AI 代理:核心卖点解析 引言 人工知能の急速な発展に伴い、AI エージェント(AI Agents)は技術分野のホットな話題となっています。ますます多くの開発者や企業が、これらのインテリジェントエージェントを利用し...

2026年 Top 10 AI 工具推薦:人工知能の真の潜在能力を解放するTechnology

2026年 Top 10 AI 工具推薦:人工知能の真の潜在能力を解放する

2026年 Top 10 AI 工具推薦:人工知能の真の潜在能力を解放する 技術が急速に進化する今日、人工知能(AI)は様々な業界でのホットな話題となっています。医療から金融サービス、教育からエンターテインメントまで、AIツールは私たちの働...

2026年 Top 10 AWSツールとリソースの推奨Technology

2026年 Top 10 AWSツールとリソースの推奨

2026年 Top 10 AWSツールとリソースの推奨 急速に発展するクラウドコンピューティングの分野で、Amazon Web Services (AWS) は常にリーダーであり、開発者、企業、技術専門家がクラウド上で効果的に作業できるよう...