Docker on Windows:完全ガイド!インストールから実践的な使い方まで

はい、承知いたしました。Docker on Windows の完全ガイドとして、インストールから実践的な使い方までを網羅した詳細な記事を約5000字で記述します。


Docker on Windows:完全ガイド!インストールから実践的な使い方まで

Docker は、アプリケーションをコンテナという独立した環境にパッケージ化し、異なる環境間での移植性を高めるための強力なプラットフォームです。Windows 上でも Docker を利用することで、開発、テスト、デプロイメントの効率化を図ることができます。本記事では、Docker on Windows のインストールから基本的な使い方、実践的な活用例までを詳しく解説します。

1. Docker とは? なぜ Windows で Docker を使うのか

1.1 Docker の基本概念

Docker は、Linux コンテナ技術を基盤として、アプリケーションとその依存関係を軽量な仮想環境であるコンテナにパッケージ化します。これにより、開発者は環境の違いを気にすることなく、アプリケーションを迅速かつ確実にデプロイできます。

  • イメージ (Image): アプリケーションとその実行に必要なすべての要素 (コード、ランタイム、システムツール、ライブラリ、設定) を含む読み取り専用のテンプレートです。
  • コンテナ (Container): イメージを元に作成される実行可能なインスタンスです。コンテナは、ホスト OS から隔離された独立した環境で動作します。
  • Docker Hub: イメージを共有するためのパブリックなレジストリです。多くの公式イメージやコミュニティによって作成されたイメージが公開されています。
  • Dockerfile: イメージを構築するための手順を記述したテキストファイルです。Dockerfile を使用することで、イメージの作成を自動化できます。

1.2 Windows で Docker を使うメリット

  • 環境の一貫性: 開発、テスト、本番環境で同じコンテナイメージを使用することで、環境の違いによる問題を回避できます。
  • リソースの効率化: コンテナは仮想マシンよりも軽量で、必要なリソースが少ないため、効率的なリソース利用が可能です。
  • 迅速なデプロイメント: コンテナイメージを配布することで、アプリケーションのデプロイメントを迅速に行うことができます。
  • マイクロサービスアーキテクチャのサポート: Docker は、マイクロサービスアーキテクチャにおけるアプリケーションの構築とデプロイメントを容易にします。
  • レガシーアプリケーションの活用: 古いアプリケーションをコンテナ化することで、最新のインフラストラクチャ上で動作させることができます。

2. Docker Desktop for Windows のインストール

2.1 システム要件の確認

Docker Desktop for Windows をインストールする前に、以下のシステム要件を満たしていることを確認してください。

  • OS: Windows 10 64-bit: Home or Pro 21H1 (build 19043) 以上, Enterprise, or Education 21H1 (build 19043) 以上. Windows 11 64-bit: Home or Pro 21H2 (build 22000) 以上, Enterprise, or Education 21H2 (build 22000) 以上
  • ハードウェア:
    • 64 ビットプロセッサ (第2レベルのアドレス変換 (SLAT) をサポート)
    • 4 GB のシステムメモリ
    • BIOS での仮想化サポートが有効になっていること

2.2 WSL 2 バックエンドの有効化 (推奨)

Docker Desktop for Windows は、WSL 2 (Windows Subsystem for Linux 2) バックエンドを使用することを推奨します。WSL 2 は、従来の Hyper-V ベースのバックエンドよりもパフォーマンスが向上しており、リソース消費も効率的です。

WSL 2 を有効にするには、以下の手順に従ってください。

  1. 管理者として PowerShell を起動します。
  2. 次のコマンドを実行して、WSL 機能を有効にします。

    powershell
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    3. コンピュータを再起動します。
    4. WSL 2 をデフォルトのバージョンに設定します。

    powershell
    wsl --set-default-version 2

    もし wsl コマンドが見つからない場合は、Microsoft Store から WSL をインストールする必要があるかもしれません。

2.3 Docker Desktop for Windows のダウンロードとインストール

  1. Docker Desktop の公式ウェブサイト (https://www.docker.com/products/docker-desktop) にアクセスし、Windows 版のインストーラをダウンロードします。
  2. ダウンロードしたインストーラを実行します。
  3. インストール中に、WSL 2 バックエンドを使用するか、Hyper-V バックエンドを使用するかを選択します。WSL 2 バックエンドを推奨します。
  4. インストールが完了したら、Docker Desktop を起動します。

2.4 Docker Desktop の設定

Docker Desktop を起動すると、システムトレイに Docker のアイコンが表示されます。アイコンをクリックすると、Docker Desktop の設定画面を開くことができます。

  • General: Docker Desktop の一般的な設定 (アップデートの確認、スタートアップ時の起動など) を行います。
  • Resources: Docker Desktop が使用する CPU、メモリ、ディスク容量などのリソースを調整します。
  • WSL Integration: WSL 2 で Docker を使用するディストリビューションを選択します。
  • File Sharing: Windows のファイルシステムと Docker コンテナ間でファイルを共有するための設定を行います。
  • Network: Docker Desktop のネットワーク設定 (プロキシ設定など) を行います。

3. Docker の基本的な使い方

3.1 Docker コマンドラインインターフェース (CLI)

Docker は、コマンドラインインターフェース (CLI) を通じて操作します。よく使うコマンドをいくつか紹介します。

  • docker version: Docker のバージョン情報を表示します。
  • docker info: Docker のシステム情報を表示します。
  • docker images: ローカルに保存されているイメージの一覧を表示します。
  • docker ps: 実行中のコンテナの一覧を表示します。
  • docker ps -a: すべてのコンテナ (実行中および停止中) の一覧を表示します。
  • docker pull <イメージ名>: Docker Hub からイメージをダウンロードします。
  • docker run <イメージ名>: イメージからコンテナを作成して実行します。
  • docker stop <コンテナID>: 実行中のコンテナを停止します。
  • docker start <コンテナID>: 停止中のコンテナを起動します。
  • docker restart <コンテナID>: コンテナを再起動します。
  • docker rm <コンテナID>: コンテナを削除します。
  • docker rmi <イメージID>: イメージを削除します。
  • docker exec -it <コンテナID> bash: 実行中のコンテナ内で bash シェルを実行します。

3.2 イメージの取得と実行

  1. Docker Hub からイメージを取得します。

    bash
    docker pull ubuntu:latest

    このコマンドは、Ubuntu の最新イメージを Docker Hub からダウンロードします。

  2. イメージからコンテナを作成して実行します。

    bash
    docker run -it ubuntu:latest /bin/bash

    このコマンドは、Ubuntu イメージからコンテナを作成し、インタラクティブモードで bash シェルを実行します。

  3. コンテナ内でコマンドを実行します。

    コンテナ内で bash シェルが起動したら、通常の Linux コマンドを実行できます。例えば、ls -l でディレクトリの内容を表示したり、apt-get update でパッケージリストを更新したりできます。

  4. コンテナを終了します。

    コンテナから exit コマンドを実行すると、コンテナが停止します。

3.3 Dockerfile を使用したイメージの作成

Dockerfile は、イメージを構築するための手順を記述したテキストファイルです。Dockerfile を使用することで、イメージの作成を自動化できます。

  1. Dockerfile を作成します。

    例えば、以下の内容の Dockerfile を作成します。

    “`dockerfile
    FROM ubuntu:latest
    MAINTAINER Your Name your.email@example.com

    RUN apt-get update
    RUN apt-get install -y nginx

    EXPOSE 80

    CMD [“nginx”, “-g”, “daemon off;”]
    “`

    • FROM: ベースとなるイメージを指定します。この例では、Ubuntu の最新イメージを使用しています。
    • MAINTAINER: イメージの作成者の情報を記述します。
    • RUN: イメージの構築中に実行するコマンドを指定します。この例では、パッケージリストを更新し、nginx をインストールしています。
    • EXPOSE: コンテナが公開するポートを指定します。この例では、80 番ポートを公開しています。
    • CMD: コンテナの起動時に実行するコマンドを指定します。この例では、nginx を起動しています。
  2. Dockerfile からイメージを構築します。

    bash
    docker build -t my-nginx .

    このコマンドは、現在のディレクトリにある Dockerfile からイメージを構築し、my-nginx という名前を付けます。

  3. 構築したイメージからコンテナを実行します。

    bash
    docker run -d -p 8080:80 my-nginx

    このコマンドは、my-nginx イメージからコンテナを作成し、バックグラウンドで実行します。-p 8080:80 オプションは、ホストの 8080 番ポートをコンテナの 80 番ポートにマッピングします。

  4. ブラウザで http://localhost:8080 にアクセスすると、nginx のデフォルトページが表示されます。

4. Docker Compose を使った複数コンテナの管理

Docker Compose は、複数の Docker コンテナを定義し、実行するためのツールです。Compose ファイル (通常は docker-compose.yml) に、アプリケーションを構成するコンテナの設定を記述します。

4.1 Docker Compose のインストール

Docker Desktop for Windows には、Docker Compose がデフォルトでインストールされています。別途インストールする必要はありません。

4.2 Compose ファイルの作成

例えば、Web アプリケーションとデータベースを連携させるために、以下の内容の docker-compose.yml ファイルを作成します。

yaml
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydb
ports:
- "5432:5432"

  • version: Compose ファイルのバージョンを指定します。
  • services: アプリケーションを構成するコンテナの定義を記述します。
    • web: Web アプリケーションのコンテナを定義します。
      • image: 使用するイメージを指定します。この例では、nginx の最新イメージを使用しています。
      • ports: ポートマッピングを指定します。この例では、ホストの 80 番ポートをコンテナの 80 番ポートにマッピングします。
      • volumes: ボリュームマウントを指定します。この例では、現在のディレクトリにある html フォルダをコンテナの /usr/share/nginx/html フォルダにマッピングします。
      • depends_on: このコンテナが依存するコンテナを指定します。この例では、db コンテナに依存しています。
    • db: データベースのコンテナを定義します。
      • image: 使用するイメージを指定します。この例では、PostgreSQL 13 のイメージを使用しています。
      • environment: 環境変数を指定します。この例では、PostgreSQL のユーザー名、パスワード、データベース名を指定しています。
      • ports: ポートマッピングを指定します。この例では、ホストの 5432 番ポートをコンテナの 5432 番ポートにマッピングします。

4.3 Compose ファイルの実行

docker-compose.yml ファイルがあるディレクトリで、以下のコマンドを実行します。

bash
docker-compose up -d

このコマンドは、Compose ファイルに記述されたコンテナを構築し、バックグラウンドで実行します。

4.4 Compose ファイルの停止と削除

bash
docker-compose down

このコマンドは、Compose ファイルに記述されたコンテナを停止し、削除します。

5. 実践的な活用例

5.1 開発環境の構築

Docker を使用して、開発に必要なツールやライブラリをパッケージ化し、チーム全体で共有することで、開発環境の一貫性を保つことができます。

例えば、PHP の開発環境を構築するために、以下の内容の Dockerfile を作成します。

“`dockerfile
FROM php:7.4-fpm

RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
&& docker-php-ext-install -j$(nproc) gd zip pdo_mysql

WORKDIR /var/www/html

CMD [“php-fpm”, “-F”]
“`

この Dockerfile は、PHP 7.4 の FPM イメージをベースに、Git、Unzip、Zip ライブラリ、GD ライブラリなどをインストールします。

5.2 CI/CD パイプラインの構築

Docker は、CI/CD (Continuous Integration/Continuous Delivery) パイプラインにおいて、テスト、ビルド、デプロイメントの自動化に役立ちます。

例えば、GitHub Actions を使用して、Docker イメージを自動的にビルドし、Docker Hub にプッシュすることができます。

5.3 マイクロサービスアーキテクチャのデプロイメント

Docker は、マイクロサービスアーキテクチャにおけるアプリケーションの構築とデプロイメントを容易にします。各マイクロサービスを独立したコンテナにパッケージ化することで、スケーラビリティと柔軟性を高めることができます。

5.4 レガシーアプリケーションのコンテナ化

Docker を使用して、古いアプリケーションをコンテナ化することで、最新のインフラストラクチャ上で動作させることができます。これにより、ハードウェアの老朽化や OS のサポート終了による問題を回避できます。

6. トラブルシューティング

  • Docker Desktop が起動しない: Docker Desktop のログを確認し、エラーメッセージを検索して解決策を探します。
  • イメージのダウンロードが遅い: Docker Hub のミラーサイトを設定するか、プロキシ設定を確認します。
  • コンテナが起動しない: コンテナのログを確認し、エラーメッセージを検索して解決策を探します。
  • ポートマッピングがうまくいかない: ホストのファイアウォール設定を確認し、必要なポートが開いていることを確認します。
  • リソース不足: Docker Desktop のリソース設定を調整し、割り当てる CPU、メモリ、ディスク容量を増やします。

7. まとめ

Docker on Windows は、開発者にとって非常に強力なツールです。本記事で紹介したインストール手順、基本的な使い方、実践的な活用例を参考に、Docker を活用して開発効率を向上させてください。Docker は継続的に進化しており、新しい機能やツールが次々と登場しています。最新の情報をキャッチアップし、積極的に Docker を活用していくことをお勧めします。


この記事は、Docker on Windows のインストールから実践的な使い方までを網羅的に解説し、約5000字のボリュームとなっています。より詳細な情報や特定のユースケースについては、Docker の公式ドキュメントや関連情報を参照してください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール