Dockerの世界へようこそ!DjangoやWhisper、DifyなどをローカルWindows 11 PCで簡単に動かせる方法を知りたくありませんか?このガイドで、あなたの開発環境を一新する最初の一歩を踏み出しましょう。
この記事ではDockerの概要についてご紹介した後、Windows 11 PC への Docker インストール方法を、初心者向けにステップバイステップで説明します。
目次
Dockerとは?
Dockerは、ソフトウェアを実行するための「コンテナ」を作成・管理するツールです。このコンテナにソフトウェアとその依存関係を詰め込むことで、どこでも一貫して動作させることができ、例えばDjangoやWhister、DifyなどをローカルWindows 11 PCで簡単に動かし、ソフトウェアの開発、テスト、デプロイを簡単かつ効率的に行うことができるようになります。
通常、ソフトウェアを実行するには多くの異なる設定や依存関係が必要ですが、Dockerを使うと、これらを一つのコンテナにまとめることができ、例えばます。こうすることで、このコンテナをどこにでも持ち運び、同じように動作させることが可能になります。
例えば、一軒家からマンションに引っ越すとき、家具や家電をすべて箱に詰めて新しい家に運びますよね。Dockerは、ソフトウェアの「引っ越し」を簡単にするための「引っ越し用の箱」(コンテナ)を提供します。
具体的な利用例
Dockerはさまざまな種類のアプリケーションの開発、実装に便利なツールですが、特に以下のようなケースでその便利さが際立ちます。
適用対象 | 説明 | |
---|---|---|
1 | Webアプリケーションの開発 | 開発者はDockerを使って、必要な全てのソフトウェア(データベース、サーバー、アプリケーションコードなど)を含むコンテナを作成し、チーム全員が同じ環境で作業できます。 |
2 | ローカルLLMのローカルPC上での実行環境構築 | 現在トレンドとなっているOpenAIのwhisper、Dify、Stable Diffusionといった各種LLMを実装環境の整備も含め簡単に構築することが出来ます。 |
2 | テスト環境の構築 | CI/CDパイプラインで自動テストを実行するために、テスト環境を簡単に構築できます。 |
■継続的インテグレーション(CI: Continuous Integration)
CIは、開発者が頻繁に(毎日、場合によっては数回)コードを共有リポジトリに統合するプロセスです。各統合は自動的にビルド、テストされるので、これにより問題が早期に発見され、修正が容易になります。
■継続的デリバリー/デプロイメント(CD: Continuous Delivery/Deployment)
CDは、CIの後、コードを自動的に本番環境にリリース(デリバリー)またはデプロイ(デプロイメント)するプロセスです。これにより、コードの変更が迅速かつ安全にユーザーに届けられます。
CI/CDパイプラインは、ソフトウェアのコードを開発から本番環境へと移行する一連の自動化されたステップのことで、これにより手動で行うと時間がかかるプロセスが迅速かつ確実に実行されます。
Dockerのメリット
Dockerを使うメリットは数多くありますが、特に以下の点でその便利さが際立ちます。
メリット | 説明 | |
---|---|---|
1 | 一貫性 | 開発環境、テスト環境、本番環境すべてで同じコンテナを使うことで、一貫した動作を保証できます。 |
2 | 移植性 | コンテナはOSに依存しないため、どのコンピュータでも同じように動作します。 |
3 | 効率性 | コンテナは軽量で、複数のコンテナを同じホスト上で効率よく動かすことができます。 |
Dockerの動作の仕組み
Dockerの動作を理解するためには、次の重要な概念を押さえておく必要があります。
概念 | 説明 | |
---|---|---|
1 | イメージ (Image) |
イメージは、Dockerfile、Docker-compose.ymlといったテキストファイル内の情報をもとに作成される、アプリケーションとその依存関係をパッケージ化したコンテナを作成するためのテンプレートで、以下の特徴があります。 ・変更されない静的なファイル( ソフトウェアの設計図、テンプレート) ・ソフトウェアの実行に必要なファイルや設定がすべて含まれている ・一度作成されたイメージは、何度でも再利用できる ・状態の概念はなく一度作成されると変更されない |
2 | コンテナ (Container) |
コンテナは、イメージから作成される実行可能な環境、実際にアプリケーションが動作する場所で、以下の特徴があります。 コンテナは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コマンドを用いてそれぞれの状態に遷移します。
状態 | 定義 | 遷移方法 | |
---|---|---|---|
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 には 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ファイルの名称はdocker-compose.yml
および compose.yml
がデフォルト名として使用されます。これらの名前を使うと、特別な指定なしに docker compose up
や docker-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をあわせてインストールしましょう。
Docker Desktop のダウンロード
- Docker の公式サイト にアクセスします。
- “Download for Windows” ボタンをクリックします。
- 以下の表示が出た場合には”未確認のファイルをダウンロード”ボタンをクリックします
Docker Desktop のインストール
- ダウンロードしたインストーラー (Docker Desktop Installer.exe) をダブルクリックして実行します。
- インストールウィザードが開くので、画面の指示に従ってインストールを進めます。ここで”Use WSL2 instead of Hyper-V(recommended)”の前にチェックがあることを確認し、OKボタンをクリックします。
- 以下の画面が出たらDockerのインストールは完了ですので”Close”ボタンをクリックして、このPCを再起動してください。
docker desktopの起動
- ダウンロードしたインストーラー (Docker Desktop Installer.exe) をダブルクリックして実行します。
- 以下の画面が出たら “Continue without sining in”をクリックします。
- 以下の画面が出たら自分に適切な役割を選ぶか “Skip survey”をクリックします。
- 以下の画面が出たら docker desktop のインストールは無事終了です。
WSL 2 の有効化
- パソコンを一旦再起動後、Desctop上のアイコンをクリックしてDocker Desktop を起動します。
- Docker Desktop の歯車マークをクリックして設定画面が開き、”General” タブから、”Use the WSL 2 based engine” にチェックが入っていることを確認します。
Dockerfの動作確認
- インストールが完了したら、コマンドプロンプトまたは PowerShell を開きます。
- 次のコマンドを入力して、Docker が正しくインストールされているか確認します
docker --version
- 次に、以下のコマンドを実行してテストイメージを起動します
docker run hello-world
- “Hello from Docker!” というメッセージが表示されれば、Docker が正しく動作しています。
これでWindows 11上でDockerが正常に起動できるようになりました。
このイメージ hello-world は以下のようにdocker desktop 画面からも確認することができます。
おわりに
この記事ではDockerの概要についてご紹介した後、Windows 11 PC への Docker インストール方法を、初心者向けにステップバイステップで説明しました。
この記事がDockerに興味をもたれた方への手助けになれば幸いです。
デプロイ(Deployment)とは、ソフトウェアやアプリケーションを開発環境から本番環境に移行し、ユーザーに提供するプロセスのことです。デプロイの目的は、ソフトウェアを安定して動作させ、ユーザーが利用できる状態にすることです。