【Windows環境構築】Windows11搭載PCにDockerを導入しよう

【Windows環境構築】Windows11搭載PCにDockerを導入しよう

Dockerの世界へようこそ!DjangoやWhisper、DifyなどをローカルWindows 11 PCで簡単に動かせる方法を知りたくありませんか?このガイドで、あなたの開発環境を一新する最初の一歩を踏み出しましょう。

この記事ではDockerの概要についてご紹介した後、Windows 11 PC への Docker インストール方法を、初心者向けにステップバイステップで説明します。

Dockerとは?

Dockerは、ソフトウェアを実行するための「コンテナ」を作成・管理するツールです。このコンテナにソフトウェアとその依存関係を詰め込むことで、どこでも一貫して動作させることができ、例えばDjangoやWhister、DifyなどをローカルWindows 11 PCで簡単に動かし、ソフトウェアの開発、テスト、デプロイを簡単かつ効率的に行うことができるようになります。

通常、ソフトウェアを実行するには多くの異なる設定や依存関係が必要ですが、Dockerを使うと、これらを一つのコンテナにまとめることができ、例えばます。こうすることで、このコンテナをどこにでも持ち運び、同じように動作させることが可能になります。

【Windows環境構築】Windows11搭載PCにDockerを導入しよう


例えば、一軒家からマンションに引っ越すとき、家具や家電をすべて箱に詰めて新しい家に運びますよね。Dockerは、ソフトウェアの「引っ越し」を簡単にするための「引っ越し用の箱」(コンテナ)を提供します。

デプロイとは

デプロイ(Deployment)とは、ソフトウェアやアプリケーションを開発環境から本番環境に移行し、ユーザーに提供するプロセスのことです。デプロイの目的は、ソフトウェアを安定して動作させ、ユーザーが利用できる状態にすることです。

具体的な利用例

Dockerはさまざまな種類のアプリケーションの開発、実装に便利なツールですが、特に以下のようなケースでその便利さが際立ちます。

適用対象 説明
1 Webアプリケーションの開発 開発者はDockerを使って、必要な全てのソフトウェア(データベース、サーバー、アプリケーションコードなど)を含むコンテナを作成し、チーム全員が同じ環境で作業できます。
2 ローカルLLMのローカルPC上での実行環境構築 現在トレンドとなっているOpenAIのwhisper、Dify、Stable Diffusionといった各種LLMを実装環境の整備も含め簡単に構築することが出来ます。
2 テスト環境の構築 CI/CDパイプラインで自動テストを実行するために、テスト環境を簡単に構築できます。
CI/CDとは?

■継続的インテグレーション(CI: Continuous Integration)

CIは、開発者が頻繁に(毎日、場合によっては数回)コードを共有リポジトリに統合するプロセスです。各統合は自動的にビルド、テストされるので、これにより問題が早期に発見され、修正が容易になります。

■継続的デリバリー/デプロイメント(CD: Continuous Delivery/Deployment)

CDは、CIの後、コードを自動的に本番環境にリリース(デリバリー)またはデプロイ(デプロイメント)するプロセスです。これにより、コードの変更が迅速かつ安全にユーザーに届けられます。

CI/CDパイプラインとは?

CI/CDパイプラインは、ソフトウェアのコードを開発から本番環境へと移行する一連の自動化されたステップのことで、これにより手動で行うと時間がかかるプロセスが迅速かつ確実に実行されます。

Dockerのメリット

Dockerを使うメリットは数多くありますが、特に以下の点でその便利さが際立ちます。

メリット 説明
1 一貫性 開発環境、テスト環境、本番環境すべてで同じコンテナを使うことで、一貫した動作を保証できます。
2 移植性 コンテナはOSに依存しないため、どのコンピュータでも同じように動作します。
3 効率性 コンテナは軽量で、複数のコンテナを同じホスト上で効率よく動かすことができます。

Dockerの動作の仕組み

Dockerの動作を理解するためには、次の重要な概念を押さえておく必要があります。

概念 説明
1 イメージ
(Image)
イメージは、DockerfileDocker-compose.ymlといったテキストファイル内の情報をもとに作成される、アプリケーションとその依存関係をパッケージ化したコンテナを作成するためのテンプレートで、以下の特徴があります。
 ・変更されない静的なファイル( ソフトウェアの設計図、テンプレート)
 ・ソフトウェアの実行に必要なファイルや設定がすべて含まれている
 ・一度作成されたイメージは、何度でも再利用できる
 ・状態の概念はなく一度作成されると変更されない
2 コンテナ
(Container)

コンテナは、イメージから作成される実行可能な環境、実際にアプリケーションが動作する場所で、以下の特徴があります。
 ・イメージに基づいて構築され実際に動作するもの
 ・軽量で、ホストOSのカーネルを共有するためリソース効率が高い
 ・コンテナ内部は他のコンテナやホストから隔離されている
 ・状態の概念があり、CLIを使ってそれぞれの状態を遷移します。

コンテナはdocker compose コマンドによって複数のコンテナとして扱われるとき、サービスとも呼ばれます。

3 Dockerエンジン
(Docker Engine)
Dockerエンジンは、コンテナの作成、管理、実行を行うソフトウェアです。エンジンは以下の2つの主要なコンポーネントから成り立ちます:
・Dockerデーモン(Docker Daemon): コンテナを管理し、APIリクエストを処理するバックグラウンドサービス。
・CLI(Command Line Interface): Dockerを操作するためのコマンドラインツール。

Dockerの使用例

まず、次の内容を含む Dockerfile という名前のテキストファイルをWindowsの任意のフォルダに準備します。

# ベースイメージを指定
FROM python:3.9

# アプリケーションのソースコードをコンテナにコピー
COPY . /app

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

# 依存関係をインストール
RUN pip install -r requirements.txt

# アプリケーションを起動
CMD ["python", "app.py"]

2. イメージ作成とコンテナ起動

次に、コマンドライン(CLI)で、作成したDockerfileのあるフォルダに移動し、以下のコマンドを実行してイメージを作成し、続いてコンテナを起動します。

docker build -t my-python-app .
docker run -d -p 5000:5000 my-python-app


これだけの手順で、アプリケーションをコンテナ内で動作させることができます。

コマンドの簡単な説明

docker build -t my-python-app .: 現在のフォルダ(ディレクトリ)にあるDockerfileを使って、my-python-appという名前のDockerイメージを作成します。
docker run -d -p 5000:5000 my-python-app: my-python-appイメージから新しいコンテナを作成し、ポート5000をマッピングしてバックグラウンドで実行します。

コンテナの状態

コンテナにはいくつかの状態があり、以下のような代表的なDockerコマンドを用いてそれぞれの状態に遷移します。

【Windows環境構築】Windows11搭載PCにDockerを導入しよう
状態 定義 遷移方法
1 Created コンテナが作成されたが、まだ開始されていない状態 docker create コマンドでコンテナを作成
2 Running コンテナが実行中の状態 docker run コマンドまたは docker start コマンドでコンテナを開始。
3 Stopped コンテナが停止している状態(実行は終了しているが、まだ削除されていない) docker stop コマンドでコンテナを停止。
7 Removed コンテナが削除された状態 コンテナが削除された状態
docker rm コマンドでコンテナを削除

 

Docker コマンド例(単一コンテナの場合)

以下に1つのコンテナにより実行環境を作る場合の基本的なコマンドの使用例を紹介します。

イメージ作成

docker build -t myimage .

カレントディレクトリにある Dockerfile を元に myimage という名前のイメージを作成します。

コンテナ作成

docker create --name mycontainer myimage

myimageイメージからmycontainerという名前のコンテナを作成しますが、起動はしません。

コンテナ起動

docker start mycontainer -d

停止中のDockerコンテナmycontainerをデタッチモード(バックグラウンド)で起動します。

コンテナの作成、起動は以下のコマンドでまとめて実行することもできます。

docker run -d --name mycontainer myimage

myimageイメージから新しいコンテナmycontainerをバックグラウンドで作成し、起動します。

実行中コンテナの表示

docker ps

現在実行中のすべてのコンテナを一覧表示します。

コンテナ停止

docker stop mycontainer

mycontainerという名前のコンテナを停止します。

コンテナ削除

docker rm mycontainer

停止中のDockerコンテナmycontainerを削除します。

イメージ削除

docker rmi myimage

myimageという名前のDockerイメージを削除します。

実行中のコンテナ内でコマンドを実行

docker exec -it mycontainer /bin/bash

実行中のmycontainerコンテナ内でbashシェルを開始します。

docker compose コマンド例(複数コンテナの場合)

複数のコンテナ(サービス)を一度に扱う場合、同様に docker コマンドを繰り返して複数のコンテナ(サービス)を作成することもできますが、通常は docker compose コマンドを使うことが一般的です。

docker compose のバージョン

docker compose には V1 と V2 の2つのバージョンがあり、以下の違いがあります。

  • V1: 初期の Docker Compose バージョンで、基本的な機能を提供します。YAML フォーマットでコンテナ定義を行い、docker-compose コマンドで操作します。
  • V2: 新しい Docker Compose バージョンで、docker compose コマンドに統合されました。構文の改善や新機能の追加が行われています。V2 は Docker CLI に統合され、コンテナ(サービス)間のネットワークやボリュームの管理が強化され、より柔軟に構成できるようになりました。また、V2では「コンテナ」を「サービス」という名前で呼びます。

V2 は 2021年8月に正式リリースされ、それ以降V2 の利用が推奨されています。
本記事ではV2をベースとして記載します。

例えば web、dbといった複数のサービス(コンテナ)を作りたいときは、Docker ファイルと同じフォルダに以下のような docker-compose.yml ファイルを準備します。

services:
  web:
    image: mywebimage
    ports:
      - "80:80"
  db:
    image: mydbimage
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password


以下に docker compose コマンドの基本的な使用例を示します。

yml ファイルの名称

ymlファイルの名称はdocker-compose.yml および compose.yml がデフォルト名として使用されます。これらの名前を使うと、特別な指定なしに docker compose updocker-compose up コマンドを実行できます。別名でymlファイルを定義したいときは -f オプションで -f another.yml のようにファイル名を指定します。
この記事中ではdocker-compose.yml をデフォルトのymlファイル名として使用します。

サービス作成、起動

docker compose up -d

docker-compose.yml ファイルで定義されたすべてのサービスをビルドし、バックグラウンドで起動します。

サービス停止

docker compose down

docker-compose.yml ファイルで定義された実行中のサービスを停止し、関連するネットワーク、ボリューム、イメージなどを削除します。

サービスのイメージ作成

docker compose build

docker-compose.yml ファイルで定義されたすべてのサービスのイメージをビルドします。

サービスの一覧表示

docker compose ps

docker-compose.yml ファイルで定義され、起動されたすべてのサービスを一覧表示します。

サービスのログ表示

docker compose logs

docker-compose.yml ファイルで定義され起動されたサービスのログを表示します。

サービス内でのコマンド実行

docker compose exec web /bin/bash

webサービス内でbashシェルを実行します。

サービス停止

docker compose stop

docker-compose.yml ファイルで定義され実行中のサービスを停止します。コンテナやその他のリソースは削除しません。

サービス開始

docker compose start

docker-compose.yml ファイルで定義され停止中のサービスを開始します。

Docker環境の構築

それではここからWindows11環境に実際にDocker環境をインストールする方法について紹介します。

WSL2/Ubuntsuのインストール

Windows11環境にDockerをインストールにはWindows11環境配下でWSL2が有効化されている必要があります。もしWindows11環境にまだWSL2が有効化されていない方は、以下の記事を参考にWSL2とUbuntsuをあわせてインストールしましょう。

【Windows環境構築】Windows11搭載PCにUbuntu 22.04 LTSを導入しよう

Docker Desktop のダウンロード

  • “Download for Windows” ボタンをクリックします。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 以下の表示が出た場合には”未確認のファイルをダウンロード”ボタンをクリックします
【Windows環境構築】Windows11搭載PCにDockerを導入しよう

Docker Desktop のインストール

  • ダウンロードしたインストーラー (Docker Desktop Installer.exe) をダブルクリックして実行します。
  • インストールウィザードが開くので、画面の指示に従ってインストールを進めます。ここで”Use WSL2 instead of Hyper-V(recommended)”の前にチェックがあることを確認し、OKボタンをクリックします。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 以下の画面が出たらDockerのインストールは完了ですので”Close”ボタンをクリックして、このPCを再起動してください。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう

docker desktopの起動

  • ダウンロードしたインストーラー (Docker Desktop Installer.exe) をダブルクリックして実行します。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 以下の画面が出たら “Continue without sining in”をクリックします。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 以下の画面が出たら自分に適切な役割を選ぶか “Skip survey”をクリックします。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 以下の画面が出たら docker desktop のインストールは無事終了です。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう

WSL 2 の有効化

  • パソコンを一旦再起動後、Desctop上のアイコンをクリックしてDocker Desktop を起動します。
  • Docker Desktop の歯車マークをクリックして設定画面が開き、”General” タブから、”Use the WSL 2 based engine” にチェックが入っていることを確認します。
【Windows環境構築】Windows11搭載PCにDockerを導入しよう

Dockerfの動作確認

  • インストールが完了したら、コマンドプロンプトまたは PowerShell を開きます。
  • 次のコマンドを入力して、Docker が正しくインストールされているか確認します
docker --version
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • 次に、以下のコマンドを実行してテストイメージを起動します
docker run hello-world
【Windows環境構築】Windows11搭載PCにDockerを導入しよう
  • “Hello from Docker!” というメッセージが表示されれば、Docker が正しく動作しています。

これでWindows 11上でDockerが正常に起動できるようになりました。

このイメージ hello-world は以下のようにdocker desktop 画面からも確認することができます。

【Windows環境構築】Windows11搭載PCにDockerを導入しよう

おわりに

この記事ではDockerの概要についてご紹介した後、Windows 11 PC への Docker インストール方法を、初心者向けにステップバイステップで説明しました。

この記事がDockerに興味をもたれた方への手助けになれば幸いです。