簡単!Docker Desktop for Windowsのインストールから基本操作まで 詳細解説
はじめに
今日のソフトウェア開発において、「コンテナ技術」は必要不可欠な存在となっています。特に「Docker」は、コンテナ技術の代名詞とも言えるツールであり、開発環境の構築、アプリケーションのデプロイ、テストなど、様々な場面でその威力を発揮します。Dockerを使うことで、開発者は自分のローカル環境と本番環境の差異に悩まされることなく、アプリケーションを「どこでも同じように」実行できるようになります。
Windowsユーザーにとって、Dockerを最も手軽かつ強力に利用できるツールが Docker Desktop for Windows です。本記事では、このDocker Desktop for Windowsを対象に、ゼロからのインストール手順、そしてDockerの基本的な操作方法について、初心者の方でも理解できるよう、非常に詳細かつ丁寧に解説していきます。
この記事を読めば、Docker Desktop for Windowsを導入し、基本的なDockerコマンドを使いこなせるようになることを目指します。約5000語という大ボリュームで、各ステップの背景にある理由や、よく使うコマンドのオプションの意味まで深く掘り下げて説明します。
さあ、コンテナ化の世界へ第一歩を踏み出しましょう。
1. Dockerの基礎知識:なぜ今、Dockerなのか?
Docker Desktop for Windowsのインストールに進む前に、まずは「Dockerとは何か」「なぜDockerが必要なのか」といった基本的な概念を理解しておくことが重要です。
1.1 コンテナとは何か?
コンテナとは、アプリケーションとその実行に必要なすべてのもの(コード、ランタイム、システムツール、システムライブラリなど)を一つにまとめて隔離された環境で実行するための技術です。これにより、開発者は自分のマシン上の環境差を気にすることなく、アプリケーションをパッケージ化し、他の環境でも同じように実行できます。
例えるなら、コンテナはアプリケーションの「輸送用コンテナ」のようなものです。輸送用コンテナの中に様々な貨物(アプリケーションとその依存関係)を詰めてしまえば、トラック、船、列車など、どんな輸送手段(実行環境)を使っても、中の貨物は安全に運ばれます。
1.2 仮想マシン(VM)との違い
コンテナが登場する以前は、アプリケーションの隔離や環境構築によく仮想マシン(VM)が使われていました。VMは、ホストOSの上にハイパーバイザーを介して、ゲストOS(カーネルを含む完全なOS)を動作させます。
特徴 | 仮想マシン (VM) | コンテナ |
---|---|---|
OS | 各VMが独立したゲストOSを持つ | ホストOSのカーネルを共有する |
隔離レベル | ハードウェアレベルに近い強力な隔離 | OSレベルの隔離(カーネルは共有) |
起動時間 | ゲストOSの起動が必要なため、比較的遅い | OSカーネルの起動が不要なため、非常に速い |
リソース | ゲストOSごとにリソース(CPU,メモリ)を消費 | ホストOSのリソースを効率的に共有 |
サイズ | ゲストOSを含むため、GB単位で大きい | アプリケーションと依存関係のみのため、MB単位で小さい |
ポータビリティ | VMイメージは移植可能だが、サイズが大きい | イメージが小さく、移植が容易 |
コンテナはVMに比べて起動が速く、リソース消費も少ないため、アプリケーションのビルド、テスト、デプロイのサイクルを高速化できます。特にマイクロサービスのような小さなアプリケーションを多数動かす場合に、コンテナは非常に適しています。
1.3 Dockerを使うメリット
Dockerを利用することで、開発者や運用者は以下のメリットを享受できます。
- 環境差異の解消: 「私の環境では動くのに…」という問題をなくし、開発環境、テスト環境、本番環境で全く同じようにアプリケーションを実行できます。
- 開発効率の向上: 必要なミドルウェア(データベース、キャッシュなど)をコンテナとしてすぐに起動できるため、環境構築にかかる時間を大幅に短縮できます。
- デプロイの簡素化: アプリケーションをコンテナイメージとしてパッケージ化すれば、そのイメージをコンテナランタイムがある任意のサーバーで簡単に実行できます。
- スケーラビリティ: コンテナは軽量で起動が速いため、負荷に応じてコンテナ数を増減させるスケーリングが容易です。
- リソースの効率化: VMと比較して少ないリソースで多くのアプリケーションを動作させられます。
- バージョン管理: Dockerイメージはバージョン管理が可能で、特定の状態にいつでも戻したり、複数のバージョンを並行して実行したりできます。
1.4 Docker Hubとは?
Docker Hubは、Dockerイメージの公開・共有のための公式レジストリサービスです。世界中の開発者が作成した様々なアプリケーションのイメージ(例: Ubuntu, Nginx, Node.js, MySQL, Redisなど)が公開されており、これらを簡単にダウンロードして利用できます。もちろん、自分で作成したイメージを公開することも可能です。
1.5 イメージとコンテナの関係
Dockerにおける「イメージ」と「コンテナ」は、しばしば混同されますが、重要な違いがあります。
- イメージ (Image): アプリケーションを実行するために必要なファイルシステム、環境設定、依存関係などがすべて含まれた読み取り専用のテンプレートです。例えるなら、OSのインストールCDや、VMのテンプレートイメージのようなものです。イメージは通常、Docker Hubのようなレジストリから取得するか、Dockerfileという定義ファイルからビルドして作成します。
- コンテナ (Container): イメージを元にして作成され、実際にアプリケーションが実行される隔離された環境です。イメージは設計図であり、コンテナはその設計図に基づいて作られた「実行中のインスタンス」です。コンテナは起動、停止、削除が可能で、実行中にデータの書き込みも行われます(ただし、その書き込みはコンテナの削除とともに消えるのが基本です。データの永続化には別途ボリュームを使います)。
一つのイメージから複数のコンテナを起動できます。
2. Docker Desktop for Windowsの理解
WindowsでDockerを利用するにはいくつかの方法がありますが、最も推奨されているのが Docker Desktop for Windows です。
2.1 Windows環境でのDockerの課題とDocker Desktopの役割
Dockerの技術は、Linuxのカーネル機能(cgroups, namespacesなど)に依存しています。そのため、Windows上で直接Linuxコンテナを動かすことはできません。この課題を解決し、Windows上でDocker環境を提供するのがDocker Desktopです。
Docker Desktopは、内部的に仮想化技術を利用してLinux環境を構築し、その中でDocker Engine(Dockerのコア機能)を動作させます。そして、Windows上のコマンドラインやGUIから、この仮想化されたLinux環境で動作するDocker Engineを操作できるように仲介します。
2.2 WSL 2バックエンドについて
Docker Desktop for Windowsの最新バージョンでは、バックエンドとして WSL 2 (Windows Subsystem for Linux 2) を利用することが強く推奨されています。
WSL 2は、Windows 10/11上でLinuxバイナリ実行ファイルを実行できるようにする互換性レイヤーであるWSLの最新バージョンです。WSL 1がシステムコール変換レイヤーであったのに対し、WSL 2は軽量な仮想マシン内で 実際のLinuxカーネル を実行します。これにより、WSL 2はWSL 1よりも高いパフォーマンスと、完全なシステムコール互換性を提供します。
Docker DesktopがWSL 2をバックエンドとして利用する場合、Docker Engine自体がWSL 2の軽量VM内で動作します。Windows側からは、WSL 2を介してシームレスにDockerコマンドを実行できるようになります。
WSL 2バックエンドのメリットは以下の通りです。
- パフォーマンス: ファイルシステムのパフォーマンスが向上し、DockerコンテナのI/O処理が高速化されます。
- 互換性: Linuxカーネルが動作するため、より幅広いLinuxディストリビューションやDocker機能をサポートできます。
- リソース効率: 従来のHyper-Vバックエンドと比較して、リソース消費が効率的です。
- 統合: Windows Terminalなど、他のWSL機能との連携がスムーズです。
現在、Docker Desktop for Windowsをインストールする場合、特別な理由がない限りWSL 2バックエンドを使用するのが標準的です。
2.3 Hyper-Vバックエンド(参考)
WSL 2が登場する以前は、Docker Desktop for WindowsはHyper-V仮想化プラットフォームをバックエンドとして利用していました。Hyper-V上にLinuxKitという軽量LinuxディストリビューションのVMを起動し、その中でDocker Engineを動かしていました。
WSL 2が利用できない古いWindowsバージョン(Windows 10 Home 1903より前など)を使用している場合や、特定の環境要件がある場合にHyper-Vバックエンドを選択することもありますが、現代のWindows環境ではWSL 2が推奨されます。この記事でも、WSL 2バックエンドを前提として説明を進めます。
3. インストール前の準備:システム要件とWSL 2の有効化
Docker Desktop for Windowsをインストールするためには、いくつかの準備が必要です。特にWSL 2を利用する場合、WSL 2を事前に有効化しておく必要があります。
3.1 システム要件の確認
Docker Desktop for Windows (WSL 2バックエンド) を実行するための主なシステム要件は以下の通りです。
- OS:
- Windows 11 64-bit: Home または Pro バージョン 21H2 以上、または Enterprise/Education バージョン 21H2 以上。
- Windows 10 64-bit: Home または Pro バージョン 1903 (Build 18362) 以上、または Enterprise/Education バージョン 1809 (Build 17763) 以上。
- 注意: Windows 10 Home/Pro で WSL 2 を利用するには、バージョン 1903 以降かつ Build 18362 以降が必要です。これより古いバージョンでは WSL 2 が利用できず、Hyper-V バックエンド(Windows 10 Pro/Enterprise/Education でのみ利用可能)を検討する必要があります。
- WSL 2 機能: 上記のOS要件を満たし、WSL 2 機能がインストールされ、デフォルトとして設定されている必要があります。
- 仮想化機能: BIOS設定でハードウェア仮想化機能(Intel VT-x または AMD-V)が有効になっている必要があります。通常、多くのPCでデフォルトで有効になっていますが、無効になっている場合はBIOS設定を変更する必要があります。
- メモリ: 最低 4GB のシステム RAM が推奨されます。Dockerコンテナを多数実行したり、リソースを多く消費するアプリケーションを動かす場合は、より多くのメモリが必要です。
- ディスク容量: Docker Desktop自体のインストールに加えて、イメージやコンテナ、ボリュームなどのデータがディスク容量を消費します。数GBから数十GBの空き容量があると安心です。
これらの要件を満たしているか、特にWindowsのバージョンとビルド番号を確認してください。確認方法は、「Windowsキー + R」を押して winver
と入力し実行すると表示されます。
3.2 WSL 2の有効化手順(詳細)
Docker DesktopをWSL 2バックエンドで利用するために、WSL 2を有効化し、Linuxディストリビューションをインストール・設定します。Windows 10 バージョン 2004 (Build 19041) 以降または Windows 11 を使用している場合は、単一コマンドでインストールできます。それより古いバージョンや手動での設定が必要な場合も考慮して、詳細な手順を説明します。
方法1: 単一コマンドでのインストール (推奨)
Windows 10 バージョン 2004 以降または Windows 11 を使用している場合、管理者権限のPowerShellまたはコマンドプロンプトを開き、以下のコマンドを実行するだけで、WSL 2の有効化、必要なコンポーネントのインストール、そしてUbuntuというLinuxディストリビューションのインストールが自動で行われます。
powershell
wsl --install
このコマンドが完了したら、コンピュータを再起動してください。再起動後、インストールされたUbuntuディストリビューションの初期設定(ユーザー名とパスワードの設定)を求められる場合があります。
方法2: 手動での有効化と設定
お使いのWindowsバージョンが古い場合や、特定の手順で設定したい場合は、以下の手動手順を実行します。
-
WSLの有効化:
管理者権限のPowerShellを開き、以下のコマンドを実行します。
powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart -
仮想マシン機能の有効化:
WSL 2では仮想マシンプラットフォームが必要です。管理者権限のPowerShellで以下のコマンドを実行します。
powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
これらのコマンドを実行したら、コンピュータを再起動してください。 -
WSL 2 Linuxカーネル更新プログラムパッケージのダウンロードとインストール:
WSL 2を動作させるためには、最新のLinuxカーネルが必要です。以下のMicrosoft公式ページから、WSL 2 Linux カーネル更新プログラム パッケージをダウンロードしてインストールします。
https://aka.ms/wsl2kernel
ダウンロードしたwsl_update_x64.msi
などを実行し、指示に従ってインストールしてください。 -
WSL 2 を既定のバージョンとして設定:
管理者権限のPowerShellで、WSLのデフォルトバージョンをWSL 2に設定します。
powershell
wsl --set-default-version 2
このコマンドは、今後インストールするLinuxディストリビューションがデフォルトでWSL 2モードで動作するように設定します。 -
Linuxディストリビューションのインストール:
Microsoft Storeを開き、「Ubuntu」「Debian」「Fedora Remix for WSL」など、好きなLinuxディストリビューションを検索してインストールします。
インストール後、Microsoft Storeから、またはスタートメニューから該当のディストリビューションを起動します。初回起動時に、ユーザー名とパスワードの設定を求められますので、任意のものを設定してください。 -
インストール済みディストリビューションのバージョン確認と変換 (必要な場合):
すでにWSLディストリビューションをインストールしている場合、それがWSL 1で動作している可能性があります。管理者権限のPowerShellで以下のコマンドを実行し、インストール済みのディストリビューションとそのWSLバージョンを確認できます。
powershell
wsl --list --verbose
# または wsl -l -v
VERSION
列が1
になっている場合は、以下のコマンドでWSL 2に変換できます。([ディストリビューション名]
は上記のリストで表示された名前に置き換えてください。例:Ubuntu-20.04
)
powershell
wsl --set-version [ディストリビューション名] 2
変換にはしばらく時間がかかる場合があります。完了するまで待ちます。
以上の手順でWSL 2環境が整います。
3.3 BIOS/UEFIでの仮想化機能の有効化
システム要件として触れましたが、ハードウェア仮想化機能(Intel VT-x または AMD-V)がBIOS/UEFI設定で無効になっていると、WSL 2やDocker Desktopが正しく動作しません。通常はデフォルトで有効ですが、もし問題が発生する場合は以下の手順で確認・有効化します。
- PCを再起動し、起動中にBIOS/UEFI設定画面に入るためのキー(多くの場合、Delete, F2, F10, F12キーなど。PCメーカーによって異なります)を連打します。
- BIOS/UEFI設定画面で、「Advanced」「CPU Configuration」「Security」などの項目を探します。
- 「Intel Virtualization Technology (VT-x)」や「AMD-V」、「Virtualization Technology」といった名称の項目を見つけます。
- その設定が「Disabled」になっている場合、「Enabled」に変更します。
- 設定を保存してPCを再起動します。
設定項目の場所や名称はPCメーカーやマザーボードによって大きく異なりますので、お使いのPCのマニュアルを参照するのが最も確実です。
4. Docker Desktop for Windowsのインストール手順
WSL 2の準備ができたら、いよいよDocker Desktop for Windowsをインストールします。
-
Docker Desktopインストーラーのダウンロード:
Docker公式サイトのDocker Desktopダウンロードページにアクセスします。
https://www.docker.com/products/docker-desktop/
Windows用のインストーラー(Docker Desktop Installer.exe
のような名前)をダウンロードします。ダウンロードにはDockerアカウントが必要な場合があります(必須ではありませんが、Docker Hub連携などに使用できます)。 -
インストーラーの実行:
ダウンロードしたインストーラーファイルDocker Desktop Installer.exe
を実行します。ユーザーアカウント制御(UAC)のダイアログが表示されたら「はい」をクリックして許可します。 -
Configuration (設定):
セットアップウィザードが表示されます。ここで重要な設定項目がいくつかあります。- Install required Windows components for WSL 2: WSL 2バックエンドを使用する場合、このオプションにチェックが入っていることを確認します。通常、WSL 2の準備ができていれば問題ありませんが、まだの場合はインストーラーが必要なコンポーネントのインストールを試みます。
- Add shortcut to desktop: デスクトップにショートカットを作成するかどうか。お好みでチェックを入れます。
これらの設定を確認したら「OK」をクリックします。
-
Installation (インストール):
インストールが開始されます。必要なファイルのコピーや設定が行われます。これには数分かかる場合があります。
インストール中に、管理者権限の許可を再度求められることがあります。 -
Installation succeeded (インストール完了):
インストールが完了すると、「Installation succeeded」と表示されます。「Close and restart」ボタンをクリックして、PCを再起動します。 -
Docker Desktopの起動と初期セットアップ:
PC再起動後、Docker Desktopが自動的に起動するか、またはスタートメニューから「Docker Desktop」を起動します。
初回起動時には、サービス規約への同意が求められる場合があります。内容を確認し「Accept」をクリックします。
続いて、簡単なチュートリアルやアンケートが表示される場合があります。これらはスキップしても構いません。
Docker Desktopのダッシュボードが表示され、タスクバーの通知領域(システムトレイ)にDockerのクジラのアイコンが表示されます。アイコンがアニメーションしている間は起動処理中です。アイコンが静止して緑色になったら、Docker Engineが完全に起動し、利用可能な状態になったことを示します。もし「WSL 2 installation is incomplete」のようなエラーが表示された場合、WSL 2の有効化手順が正しく行われていない可能性があります。前述の「3.2 WSL 2の有効化手順」を再度確認・実行してください。
5. Docker Desktopの初期設定と動作確認
Docker Desktopが正常に起動したら、設定を確認し、正しく動作しているか簡単なコマンドでテストします。
5.1 Docker Desktop GUIの確認
システムトレイにあるDockerクジラアイコンを右クリックするか、アイコンをクリックして表示されるメニューから「Dashboard」を選択すると、Docker DesktopのGUIダッシュボードが表示されます。
ダッシュボードでは、実行中のコンテナ、インストール済みのイメージ、ボリュームなどを視覚的に確認・管理できます。また、左側のメニューから「Settings」(または歯車アイコン)を選択すると、詳細な設定画面を開けます。
5.2 設定画面の確認(特にWSL Integration)
Settings画面を開き、左側メニューから「Resources」→「WSL Integration」を選択します。
ここで、インストール済みのWSLディストリビューションの一覧が表示され、それぞれに対してDocker Desktopが連携を有効にするかどうかを選択できます。通常、「Enable integration with my default WSL distro」にチェックが入っており、かつDocker Engineがそのディストリビューション内で動作している状態が推奨されます。特定のディストリビューションだけでDockerを使いたい場合は、個別に有効/無効を設定できます。
この設定により、Windows上のPowerShellやコマンドプロンプト、またはWSLディストリビューションのシェルから、インストールされたDocker Engineにアクセスできるようになります。
他の設定項目(General, Docker Engine, Kubernetesなど)もありますが、最初はデフォルト設定のままで問題ありません。必要に応じて後で調整します。
5.3 Dockerコマンドの動作確認
Windows上でPowerShell、コマンドプロンプト、またはWindows Terminalを開きます。(WSLディストリビューションのシェル内でもDockerコマンドは実行できますが、まずはWindows側から確認するのが一般的です)
以下のコマンドを実行して、Dockerが正しくインストールされ、応答するか確認します。
-
Dockerのバージョン確認:
bash
docker version
このコマンドは、DockerクライアントとDockerエンジンのバージョン情報を表示します。Client
とEngine
の両方にバージョン情報が表示されれば、DockerコマンドがDocker Engineと通信できていることを示します。 -
Dockerシステムの詳細情報表示:
bash
docker info
このコマンドは、Docker Engineに関する詳細な情報(使用中のストレージドライバ、コンテナ数、イメージ数、使用メモリ量、WSL 2の状態など)を表示します。大量の情報が出力されますが、エラーが出ていなければ正常に動作しています。Operating System
がDocker Desktop
と表示され、Kernel Version
がLinuxカーネルのバージョンになっていれば、WSL 2バックエンドで動作していることが確認できます。 -
最初のコンテナ実行 (Hello World):
Dockerが正しく動作していることを確認する定番のコマンドです。hello-world
というテストイメージを使ってコンテナを起動します。
bash
docker run hello-world
このコマンドを実行すると、以下の手順が自動で行われます。- ローカルに
hello-world
イメージが存在するか確認する。 - 存在しない場合、Docker Hubから
hello-world
イメージを自動的にダウンロード (Pull) する。 - ダウンロードしたイメージを元にコンテナを作成し、実行する。
- コンテナが実行され、成功メッセージ(”Hello from Docker!”を含むメッセージ)がターミナルに表示される。
- コンテナは処理が完了すると自動的に終了する。
このコマンドが成功し、メッセージが表示されれば、Docker Desktop for Windowsが正常にインストールされ、基本的なコンテナ実行ができる状態になったことを意味します。
- ローカルに
6. Dockerの基本操作(CLI中心)
ここからは、Windowsのコマンドライン(PowerShell, コマンドプロンプト, Windows Terminalなど)からDockerを操作する基本的なコマンドについて詳しく解説します。Docker Desktop GUIでも多くの操作が可能ですが、CLI操作は自動化やスクリプト化に便利であり、Dockerを深く理解するためにも重要です。
6.1 イメージ操作
アプリケーションの実行環境となる「イメージ」の操作から始めます。
-
Docker Hubでイメージを探す
特定のアプリケーションやOSのイメージが必要な場合、Docker Hub(https://hub.docker.com/)で公式イメージやコミュニティイメージを検索できます。例えば、ubuntu
、nginx
、mysql
、node
などのキーワードで検索できます。検索結果には、イメージ名(nginx
など)、説明、ダウンロード数、公式かどうかなどが表示されます。イメージ名は通常リポジトリ名/イメージ名[:タグ]
の形式ですが、公式イメージの場合はイメージ名[:タグ]
となります(例:ubuntu:latest
,nginx:1.21.0
)。タグを省略すると、デフォルトでlatest
タグが使われます。 -
イメージの取得:
docker pull
Docker Hubなどのレジストリからイメージをローカルマシンにダウンロードするコマンドです。
bash
docker pull [イメージ名][:タグ]
例:- 最新版のUbuntuイメージを取得
bash
docker pull ubuntu
# または docker pull ubuntu:latest - 特定のバージョンのNginxイメージを取得
bash
docker pull nginx:1.21.0 - 特定のユーザーのリポジトリからイメージを取得
bash
docker pull myuser/myimage:1.0
docker run
コマンドを実行した際にローカルにイメージがない場合も、自動的にdocker pull
が行われますが、事前にダウンロードしておきたい場合に利用します。
- 最新版のUbuntuイメージを取得
-
イメージの一覧表示:
docker images
ローカルマシンにダウンロードまたはビルドされたイメージの一覧を表示します。
bash
docker images
# または docker image ls
出力例:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest c1c8b456f855 2 weeks ago 77.8MB
nginx 1.21.0 a1f9a0904a58 3 months ago 133MB
hello-world latest bf756fb1cd85 7 months ago 13.3kBREPOSITORY
: イメージのリポジトリ名TAG
: イメージのタグ(バージョンなど)IMAGE ID
: イメージを一意に識別するIDCREATED
: イメージが作成されてからの経過時間SIZE
: イメージの容量
オプション:
*-a
,--all
: 中間イメージも含め、すべてのイメージを表示します。
*--filter
: 特定の条件でイメージをフィルタリングします(例:docker images --filter "before=ubuntu:latest"
) -
イメージの詳細確認:
docker inspect
特定のイメージに関する詳細な情報をJSON形式で表示します。
bash
docker inspect [イメージIDまたはイメージ名:タグ]
例:
bash
docker inspect ubuntu:latest
イメージのレイヤー情報、環境変数、エントリポイント、ボリューム設定など、多くの情報を確認できます。 -
イメージの削除:
docker rmi
ローカルマシンから不要になったイメージを削除します。
bash
docker rmi [イメージIDまたはイメージ名:タグ]
# または docker image rm
例:
bash
docker rmi ubuntu:latest
docker rmi a1f9a0904a58 # イメージIDで指定する場合
注意: そのイメージから作成されたコンテナが存在する場合(停止中も含めて)、イメージは削除できません。コンテナを削除してからイメージを削除する必要があります。
オプション:-f
,--force
: 実行中のコンテナに関連付けられている場合でも、強制的にイメージを削除します。ただし、実行中のコンテナ自体は削除されません。関連するコンテナを先に削除するのが安全です。
6.2 コンテナ操作
イメージを元にアプリケーションを実行する「コンテナ」の操作が、Docker操作の中心となります。
-
コンテナの実行:
docker run
指定したイメージを元にコンテナを作成し、実行します。最もよく使うコマンドであり、多くのオプションがあります。
基本的な書式:
bash
docker run [オプション] [イメージ名][:タグ] [コンテナ内で実行するコマンド] [コマンドの引数...]
[コンテナ内で実行するコマンド]
を省略した場合、イメージに設定されたデフォルトのコマンド(DockerfileのCMDやENTRYPOINTで指定)が実行されます。よく使うオプションの詳細な解説:
-
-it
:-i
,--interactive
: コンテナの標準入力を開いたままにします。これにより、コンテナ内のシェルなどにコマンドを入力できるようになります。-t
,--tty
: 擬似ターミナル (pseudo-TTY) を割り当てます。これにより、インタラクティブなシェル操作が可能になります。- 組み合わせ
docker run -it
: 多くのOSイメージ(Ubuntuなど)でシェルを起動して操作したい場合に必須のオプションです。
例:Ubuntuコンテナを起動してBashシェルに入る
“`bash
docker run -it ubuntu bash
実行後、コンテナ内のbashプロンプトが表示される
exit でコンテナから抜ける(コンテナは停止する)
“`
-
-d
:--detach
コンテナをバックグラウンド(デタッチモード)で実行します。コンテナIDが出力され、ホスト側のターミナルはすぐに制御を戻します。Webサーバーやデータベースなど、継続的に動作するサービスを起動する場合に利用します。
例:Nginxコンテナをバックグラウンドで起動
bash
docker run -d nginx
# コンテナIDが出力される -
-p [ホストポート]:[コンテナポート]
:--publish
ホストマシンとコンテナ間でポートをマッピングします。これにより、ホストマシンからコンテナ内で実行されているサービス(Webサーバーなど)にアクセスできるようになります。
例:ホストの8080ポートをコンテナの80ポートにマッピングしてNginxを起動
bash
docker run -d -p 8080:80 nginx
# ホストのブラウザで http://localhost:8080 にアクセスすると、コンテナ内のNginxが表示される[ホストポート]
:ホストマシンで使用するポート番号[コンテナポート]
:コンテナ内でアプリケーションがListenしているポート番号
-
-v [ホストパス]:[コンテナパス]
:--volume
ホストマシン上のディレクトリやファイルをコンテナ内のパスにマウントします。これにより、コンテナが削除されてもデータが失われないようにしたり(データ永続化)、ホスト側のファイルをコンテナで利用したりできます。
例1:ホストの現在のディレクトリにあるindex.html
をNginxのドキュメントルートにマウント
bash
# あらかじめ現在のディレクトリに index.html ファイルを作成しておく
docker run -d -p 8080:80 -v "$(pwd)/index.html":/usr/share/nginx/html/index.html nginx
# PowerShellの場合: "$(pwd)" を使用
# コマンドプロンプトの場合: "%cd%" を使用
例2:ホストの~/mydata
ディレクトリをコンテナ内の/app/data
ディレクトリにマウント (データの永続化)
bash
docker run -d -v ~/mydata:/app/data myapp_image[ホストパス]
:ホストマシン上の絶対パスまたは相対パス。ボリューム名を指定することも可能(後述)。[コンテナパス]
:コンテナ内のマウント先の絶対パス。
バインドマウント(ホストパス指定)は開発時などに便利ですが、データの永続化には後述の「名前付きボリューム (Named Volume)」が推奨されます。
-
--name [名前]
:
コンテナに分かりやすい名前を付けます。名前を指定しない場合、Dockerがランダムな名前を付けます。名前は一意である必要があります。
例:コンテナにmy-web-server
という名前を付けてNginxを起動
bash
docker run -d --name my-web-server -p 8080:80 nginx
名前を付けることで、以降のコマンドでコンテナIDの代わりに名前でコンテナを指定できるようになります(例:docker stop my-web-server
)。 -
--rm
:
コンテナが終了したときに自動的に削除します。使い捨てのテストコンテナや一時的なタスクを実行する場合に便利です。
例:処理終了後に自動削除されるコンテナを実行
bash
docker run --rm ubuntu echo "Cleanup after me!" -
-e KEY=VALUE
:--env
コンテナに環境変数を渡します。アプリケーションの設定などをコンテナ外部から渡す際に利用します。
例:環境変数MY_VAR
を設定してコンテナを実行
bash
docker run -e MY_VAR="Hello Docker" ubuntu printenv MY_VAR
# "Hello Docker" と表示される -
--network [ネットワーク名]
:
コンテナを特定のDockerネットワークに接続します。デフォルトではbridge
ネットワークに接続されます。複数のコンテナを連携させる場合などにカスタムネットワークを作成して利用します。 -
その他のオプション:
-w [パス]
,--workdir
: コンテナ内でコマンドを実行する際の作業ディレクトリを指定します。-u [ユーザー名またはUID]
,--user
: コンテナ内でコマンドを実行するユーザーを指定します。--restart [ポリシー]
: コンテナの再起動ポリシー(no
,on-failure
,unless-stopped
,always
など)を指定します。
-
-
実行中のコンテナ一覧表示:
docker ps
現在実行中のコンテナの一覧を表示します。
bash
docker ps
# または docker container ls
出力例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9f3k0b2m1p7 nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp my-web-serverCONTAINER ID
: コンテナを一意に識別するID(短縮形)IMAGE
: コンテナ作成元のイメージCOMMAND
: コンテナ起動時に実行されたコマンドCREATED
: コンテナが作成されてからの経過時間STATUS
: コンテナの状態(Up
実行中,Exited
終了など)PORTS
: ポートマッピング情報NAMES
: コンテナ名
オプション:
*-a
,--all
: 実行中だけでなく、停止中のコンテナも含め、すべてのコンテナを表示します。停止中のコンテナIDや名前を確認したい場合に使います。 -
コンテナの停止:
docker stop
実行中のコンテナに停止シグナルを送り、正常終了させます。指定時間内に終了しない場合は強制終了されます。
bash
docker stop [コンテナIDまたは名前]
# または docker container stop
例:
bash
docker stop my-web-server
docker stop a9f3k0b2m1p7 -
コンテナの開始:
docker start
停止中のコンテナを再開します。
bash
docker start [コンテナIDまたは名前]
# または docker container start -
コンテナの再起動:
docker restart
実行中のコンテナを停止し、再度起動します。
bash
docker restart [コンテナIDまたは名前]
# または docker container restart -
コンテナの一時停止/再開:
docker pause
,docker unpause
コンテナのプロセスを一時的に停止(フリーズ)させ、リソースを消費しないようにします。状態は維持されます。
bash
docker pause [コンテナIDまたは名前]
docker unpause [コンテナIDまたは名前] -
コンテナの削除:
docker rm
停止中のコンテナを削除します。実行中のコンテナはデフォルトでは削除できません。
bash
docker rm [コンテナIDまたは名前]
# または docker container rm
例:
bash
docker rm my-web-server
オプション:-f
,--force
: 実行中のコンテナを強制的に停止させてから削除します。非推奨です。まずはdocker stop
で正常停止を試みるべきです。-v
,--volumes
: コンテナに関連付けられている匿名ボリュームも同時に削除します。(名前付きボリュームは削除されません)
-
コンテナ内でのコマンド実行:
docker exec
実行中のコンテナ内で新しいコマンドを実行します。コンテナに入って内部の状態を確認したり、デバッグしたりする際に非常に便利です。
bash
docker exec [オプション] [コンテナIDまたは名前] [実行するコマンド] [コマンドの引数...]
オプション:-it
: インタラクティブなシェルセッションを開始する場合にdocker run -it
と同様に使用します。
例:実行中のmy-web-server
コンテナ内でBashシェルを起動
“`bash
docker exec -it my-web-server bash
コンテナ内のbashプロンプトが表示され、コンテナ内部のファイルシステムやコマンドにアクセスできる
exit でコンテナ内のシェルから抜ける(コンテナ自体は停止しない)
例:実行中の `my-web-server` コンテナ内で特定のコマンドを実行
bash
docker exec my-web-server nginx -vコンテナ内のNginxのバージョンが表示される
“`
-
コンテナのログ表示:
docker logs
コンテナの標準出力 (stdout) および標準エラー出力 (stderr) を表示します。コンテナ内で何が起きているかを確認するのに不可欠です。
bash
docker logs [コンテナIDまたは名前]
オプション:-f
,--follow
: リアルタイムでログを追跡します。--tail [行数]
: 最後の指定行数だけを表示します。
-
コンテナのリソース使用状況表示:
docker stats
実行中のコンテナのCPU、メモリ、ネットワークI/O、ディスクI/Oの使用状況をリアルタイムで表示します。
bash
docker stats
Ctrl+C で終了します。
6.3 ボリューム操作(名前付きボリューム)
コンテナが削除されてもデータを永続化したい場合や、複数のコンテナ間でデータを共有したい場合に、ボリュームを使用します。前述のバインドマウント (-v [ホストパス]:[コンテナパス]
) 以外に、Dockerが管理する「名前付きボリューム (Named Volume)」を使用する方法があります。こちらの方が推奨されます。
-
ボリュームの作成:
docker volume create
Dockerにボリュームを作成させます。
bash
docker volume create [ボリューム名]
例:
bash
docker volume create mydata_volume -
ボリュームの一覧表示:
docker volume ls
作成済みのボリュームの一覧を表示します。
bash
docker volume ls -
ボリュームの詳細確認:
docker volume inspect
特定のボリュームに関する詳細情報を表示します。実際の保存場所なども確認できます。
bash
docker volume inspect [ボリューム名] -
コンテナへのボリュームマウント:
docker run -v [ボリューム名]:[コンテナパス]
コンテナ実行時に、作成済みの名前付きボリュームをコンテナ内のパスにマウントします。
bash
docker run -d -v mydata_volume:/app/data myapp_image
もし指定したボリューム名が存在しない場合、Dockerは自動的にその名前で新しいボリュームを作成してからマウントします。 -
ボリュームの削除:
docker volume rm
使用されていないボリュームを削除します。
bash
docker volume rm [ボリューム名]
注意: 実行中または停止中のコンテナに使用されているボリュームは削除できません。
オプション:-f
: 強制削除。非推奨です。
-
使用されていないボリュームの一括削除:
docker volume prune
どのコンテナにも関連付けられていないボリュームをすべて削除します。ディスク容量を解放するのに役立ちます。
bash
docker volume prune
実行前に削除されるボリュームのリストが表示され、確認を求められます。
6.4 Dockerfile
Dockerイメージは手動で作成することも可能ですが、通常は Dockerfile というテキストファイルにイメージのビルド手順を記述し、それを使ってイメージを自動的にビルドします。Dockerfileは、イメージの構成をコードとして管理できるため、再現性や共有性に優れています。
簡単なDockerfileの例:アパッチWebサーバーを含むイメージを作成
“`dockerfile
ベースとなるイメージを指定
FROM ubuntu:latest
イメージ作成者のラベルを追加(任意)
LABEL maintainer=”Your Name your.email@example.com“
イメージを更新し、Apache2をインストール
RUN apt-get update && \
apt-get install -y apache2 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
Webサイトのコンテンツをコピー
ホストの現在のディレクトリにある index.html をコンテナ内にコピー
COPY index.html /var/www/html/
コンテナがListenするポートを指定(情報として)
EXPOSE 80
コンテナ起動時に実行されるコマンド
Apache2をフォアグラウンドで実行
CMD [“apache2ctl”, “-D”, “FOREGROUND”]
``
index.html
このDockerfileと同じディレクトリにファイル(例:
Hello from Docker Apache!
`)を作成します。
Dockerfileからのイメージビルド: docker build
Dockerfileがあるディレクトリで以下のコマンドを実行すると、Dockerfileの内容に基づいて新しいイメージがビルドされます。
bash
docker build -t [新しいイメージ名][:タグ] [Dockerfileがあるディレクトリのパス]
例:(Dockerfileとindex.htmlが現在のディレクトリにある場合)
bash
docker build -t my-apache-image:1.0 .
* -t [新しいイメージ名][:タグ]
: ビルドするイメージに名前とタグを付けます。指定しないとランダムなIDだけになります。
* [Dockerfileがあるディレクトリのパス]
: Dockerfileが存在するディレクトリを指定します。上記の例の .
は現在のディレクトリを意味します。このディレクトリを「ビルドコンテキスト」と呼びます。COPYなどの命令は、このビルドコンテキストからの相対パスでファイルを指定します。
ビルドが成功すると、指定した名前のイメージが docker images
のリストに追加されます。
このビルドしたイメージを実行するには、前述の docker run
コマンドを使います。
bash
docker run -d -p 8080:80 my-apache-image:1.0
ホストのブラウザで http://localhost:8080
にアクセスすると、コンテナ内のApacheが表示する index.html
の内容が見えるはずです。
6.5 Docker Compose
複数のコンテナで構成されるアプリケーション(例: Webサーバー + データベース)を管理する場合、個別に docker run
コマンドを複数実行するのは煩雑です。Docker Compose は、複数コンテナアプリケーションの構成をYAMLファイル (docker-compose.yml
など) に記述し、単一コマンドでまとめて管理(ビルド、起動、停止、削除など)できるようにするツールです。
Docker Desktop for WindowsにはDocker Compose(v2)が同梱されているため、別途インストールする必要はありません。コマンドは docker compose
となります(古いバージョンでは docker-compose
ハイフン付きでした)。
簡単な docker-compose.yml
の例:Webサーバーとデータベースの連携
“`yaml
version: ‘3.8’ # Composeファイルのバージョン
定義するサービス(コンテナ)群
services:
# Webサービスの定義
web:
image: nginx:latest # 使用するイメージ
ports:
– “80:80” # ポートマッピング (ホスト:コンテナ)
volumes:
– ./html:/usr/share/nginx/html # ホストの ./html ディレクトリをコンテナにマウント
depends_on: # このサービスを開始する前に待つサービス
– app # appサービスが起動するまで待つ(厳密には起動コマンド実行まで)
# アプリケーションサービスの定義(例:Python/Flaskアプリ)
app:
build: . # カレントディレクトリのDockerfileからイメージをビルド
ports:
– “5000:5000” # ポートマッピング
volumes:
– ./app:/app # ホストの ./app ディレクトリをコンテナにマウント
environment: # 環境変数
DATABASE_URL: “postgresql://user:password@db:5432/mydatabase” # データベース接続情報
depends_on:
– db # dbサービスが起動するまで待つ
# データベースサービスの定義(例:PostgreSQL)
db:
image: postgres:13 # 使用するイメージ
environment: # 環境変数(データベースの初期設定に必要)
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
– db_data:/var/lib/postgresql/data # 名前付きボリュームでデータを永続化
ボリュームの定義
volumes:
db_data: # dbサービスで使用するボリュームを定義
``
web
この例では、(Nginx)、
app(独自のアプリケーション)、
db` (PostgreSQL) という3つのサービスを定義しています。それぞれ使用するイメージ、ポートマッピング、ボリューム設定、環境変数、依存関係が記述されています。
Docker Composeを使ったアプリケーションの管理
docker-compose.yml
ファイルがあるディレクトリで、以下のコマンドを実行します。
-
サービスの起動:
docker compose up
docker-compose.yml
ファイルに定義されているすべてのサービスを起動します。イメージが存在しない場合は自動的にビルドまたはダウンロードされます。
bash
docker compose up
デフォルトでは、ログが現在のターミナルに表示され続けます。-d
: デタッチモードでバックグラウンド実行します。
bash
docker compose up -d
-
サービスの停止:
docker compose down
docker compose up
で起動したサービスをすべて停止し、コンテナ、デフォルトネットワーク、デフォルトボリューム(匿名ボリューム)などを削除します。
bash
docker compose down-v
: コンテナに関連付けられている名前付きボリュームも同時に削除します。注意: データが失われます。
bash
docker compose down -v
-
サービスのビルド:
docker compose build
build
ディレクティブが指定されているサービス(上記の例のapp
サービス)のイメージをビルドします。docker compose up
実行時にも自動で行われますが、ビルドだけ先行して行いたい場合に利用します。
bash
docker compose build -
実行中のサービス一覧:
docker compose ps
Composeファイルで定義されているサービスのうち、現在実行中のコンテナ一覧を表示します。
Docker Composeを使うことで、複雑なアプリケーション構成もYAMLファイル一つで管理でき、チームメンバー間での環境共有も容易になります。
7. Docker Desktop GUIの使い方
Docker Desktop for Windowsには、CLI操作を補完するGUIインターフェース(ダッシュボード)があります。これを使うと、コンテナやイメージの状態を視覚的に確認したり、簡単な操作を行ったりできます。
7.1 ダッシュボードの概要
タスクバーのDockerクジラアイコンをクリックし、「Dashboard」を選択するとGUIが表示されます。左側のナビゲーションメニューで様々な項目にアクセスできます。
- Containers: 実行中または停止中のコンテナ一覧を表示します。各コンテナについて、名前、ステータス、イメージ、ポートマッピングなどが一目でわかります。
- コンテナ名をクリックすると、そのコンテナの詳細画面が表示され、ログ、インスペクト情報、統計情報などが確認できます。
- 各コンテナの右側に表示されるアイコンで、停止、開始、再起動、削除、Exec(シェル接続)、ブラウザで開く(ポートがマッピングされている場合)などの操作ができます。
- Images: ローカルに存在するDockerイメージの一覧を表示します。イメージ名、タグ、サイズ、最終更新日時などが確認できます。
- イメージ名をクリックすると、そのイメージを元にコンテナを起動するためのオプション設定画面が表示されます(
docker run
コマンドのGUI版のようなもの)。 - イメージの右側のアイコンで、イメージの削除や、そのイメージを元にしたコンテナ起動ができます。
- イメージ名をクリックすると、そのイメージを元にコンテナを起動するためのオプション設定画面が表示されます(
- Volumes: Dockerが管理する名前付きボリュームの一覧を表示します。ボリューム名や使用状況(使用しているコンテナ数)が確認できます。不要なボリュームを削除することも可能です。
- Dev Environments: 複数のコンテナとボリュームで構成される開発環境をテンプレートから簡単にセットアップ・管理できる機能です。
- Settings: Docker Desktop自体の詳細な設定を行います(前述のWSL Integrationなどもここに含まれます)。
- Learn: Dockerの学習リソースへのリンク集です。
7.2 GUIでの主要操作
- コンテナの起動: Imagesタブでイメージを選び、右端の再生ボタンアイコンをクリックすると、「Optional settings」画面が表示されます。ここでコンテナ名、ポートマッピング、ボリュームマウント、環境変数などの
docker run
オプションを設定し、「Run」ボタンをクリックしてコンテナを起動できます。 - コンテナの管理: Containersタブで、実行中/停止中のコンテナの状態を確認し、アイコンをクリックすることで簡単に開始、停止、再起動、削除、シェル接続(Exec)ができます。ログ表示や統計情報の確認もGUIから行えます。
- イメージの削除: Imagesタブで不要なイメージを選び、右端のごみ箱アイコンをクリックして削除できます。
- ボリュームの削除: Volumesタブで不要なボリュームを選び、ごみ箱アイコンをクリックして削除できます。
GUIは、CLIコマンドを覚えていない初心者の方や、コンテナの状態をざっと確認したい場合に便利です。ただし、複雑な設定や自動化にはCLIの方が向いています。GUIとCLIを状況に応じて使い分けるのが良いでしょう。
8. トラブルシューティング
Docker Desktop for Windowsを使用する上で遭遇しやすい一般的な問題とその解決策について説明します。
8.1 Docker Desktopが起動しない/エラーが発生する
-
「WSL 2 installation is incomplete」エラー:
- WSL 2が正しくインストール・設定されていない場合に発生します。
- 解決策: 「3.2 WSL 2の有効化手順」を最初からやり直してください。特に、
wsl --set-default-version 2
の実行と、WSL 2 Linuxカーネル更新プログラムのインストール、そしてPCの再起動が重要です。管理者権限でPowerShellを実行しているか確認してください。
-
仮想化機能(Hyper-VまたはVirtual Machine Platform)が無効になっている:
- Docker DesktopやWSL 2は仮想化機能に依存します。
- 解決策: 「3.3 BIOS/UEFIでの仮想化機能の有効化」を確認し、必要であれば有効にしてください。また、Windowsの機能として「仮想マシン プラットフォーム」および「Linux用Windowsサブシステム」が有効になっているか、「コントロールパネル」→「プログラム」→「Windowsの機能の有効化または無効化」で確認し、チェックが入っていなければ有効にしてPCを再起動してください。
-
ディスク容量不足:
- Dockerイメージやコンテナデータはディスク容量を消費します。容量が不足すると正常に動作しないことがあります。
- 解決策: ディスクの空き容量を確認してください。不要なイメージやコンテナ、ボリュームを削除 (
docker rmi
,docker rm
,docker volume rm
) したり、docker system prune
コマンドで未使用のDockerオブジェクトを一括削除したりして容量を解放してください。
-
ポート競合:
- Docker Desktopが内部で使用するポート(例えばKubernetesを有効にしている場合)が他のアプリケーションと競合している可能性があります。
- 解決策: Docker Desktopの設定でKubernetesを無効にしてみるか、ポート競合しているアプリケーションを特定して停止してください。
-
ファイアウォールやセキュリティソフトによるブロック:
- ファイアウォールやセキュリティソフトがDocker Desktopの通信をブロックしている可能性があります。
- 解決策: Docker Desktopおよびその関連プロセス(dockerd.exeなど)をファイアウォールの例外に追加してください。
8.2 コンテナが起動しない/すぐに終了する
-
実行するコマンドに問題がある:
docker run
の最後に指定したコマンドや、DockerfileのCMD/ENTRYPOINTに誤りがある可能性があります。- 解決策: コンテナのログを確認してください (
docker logs [コンテナID]
)。エラーメッセージが表示されているはずです。-it
オプションを付けて対話的にコンテナを起動し、手動でコマンドを実行して原因を特定するのも有効です。 - Dockerfileを使っている場合は、Dockerfileの内容を確認し、正しく記述されているかチェックしてください。
-
ポート競合:
-p
オプションで指定したホスト側のポートが、すでにホスト上の別のプロセスに使用されている可能性があります。- 解決策:
docker ps
でSTATUSがExited
になっているコンテナのログを確認してください。ポートバインディングに関するエラーが出ていることがあります。または、ホスト側の別のポート番号に変更して再度docker run
を試してください。WindowsのPowerShellでnetstat -ano | findstr :<ポート番号>
コマンドなどで、ポートを使用しているプロセスを特定することも可能です。
-
ボリュームマウントのパス誤り:
-v
オプションで指定したホスト側のパスが存在しない、またはコンテナ側のパスが正しくない可能性があります。- 解決策: ホスト側のパスが正しいか、コンテナ側のパスが意図した場所になっているか確認してください。特にWindowsパスをマウントする場合、WSL 2環境でのパス指定方法(例:
/mnt/c/Users/YourUser/Documents/myproject
)に注意が必要です。
8.3 ディスク容量の管理
Dockerはイメージやコンテナ、ボリュームなどのデータを蓄積するため、長期間使用するとディスク容量を大きく消費することがあります。
-
使用されていないDockerオブジェクトの削除:
- 停止中のコンテナ、使用されていないイメージ、ネットワーク、ボリュームなどをまとめて削除するコマンドです。容量解放に非常に有効です。
bash
docker system prune - さらに、ボリュームも含めてすべて削除したい場合は
-a
オプションを追加します。(匿名ボリュームだけでなく、名前付きボリュームも削除される可能性があるため注意が必要です)
bash
docker system prune -a --volumes
これらのコマンドは実行前に削除対象を表示し、確認を求めます。内容をよく確認してから実行してください。
- 停止中のコンテナ、使用されていないイメージ、ネットワーク、ボリュームなどをまとめて削除するコマンドです。容量解放に非常に有効です。
-
WSL 2 VMによるディスク使用量:
WSL 2は仮想ハードディスクファイル (.vhdx
) を使用してLinuxファイルのストレージを管理します。このファイルは時間とともに肥大化することがあります。- 解決策: WSLディストリビューションをシャットダウンしてから、仮想ハードディスクファイルを圧縮するコマンドを実行します。(管理者権限のPowerShellで)
“`powershell
wsl –shutdown
しばらく待つ
diskpart
DISKPARTプロンプトが表示される
select vdisk file=”
“ vhdxファイルのパスは wslpath “$(wsl –user root –cd ~ -e echo ‘$HOME’)” などで調べられるが少し複雑。
デフォルトの場所は %LOCALAPPDATA%\Packages\
\LocalState\ .vhdx のようなパス。 attach vdisk readonly
compact vdisk
detach vdisk
exitDISKPARTプロンプトから抜ける
“`
この手順は少し専門的ですが、WSL 2が占有するディスク容量を減らすのに効果があります。 - 解決策: WSLディストリビューションをシャットダウンしてから、仮想ハードディスクファイルを圧縮するコマンドを実行します。(管理者権限のPowerShellで)
9. さらに学ぶために
Docker Desktop for Windowsのインストールと基本操作を習得したら、さらにDockerを活用するためのステップがあります。
- Docker Composeの詳細: 複数コンテナアプリケーションの定義 (
docker-compose.yml
の詳細な書き方、サービス間のリンク、ネットワーク設定など) を深く学ぶ。 - Dockerfileのベストプラクティス: より効率的で安全なイメージを作成するためのDockerfileの記述方法(マルチステージビルド、キャッシュの活用、不要ファイルの削減など)を学ぶ。
- Docker Registryの構築・利用: プライベートな環境でDockerイメージを共有するためのRegistryの構築方法や、認証設定などを学ぶ。
- Kubernetes入門: コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのデファクトスタンダードとなっているコンテナオーケストレーションツール、Kubernetesの基本的な概念や操作を学ぶ。(Docker DesktopにはKubernetesクラスターをローカルで起動する機能が含まれています)
- CI/CDとの連携: Jenkins, GitLab CI, GitHub ActionsなどのCI/CDツールとDockerを連携させ、自動的なビルド、テスト、デプロイメントパイプラインを構築する方法を学ぶ。
Dockerは非常に活発に開発されている技術であり、常に新しい機能や改善が追加されています。公式ドキュメントやコミュニティリソースを積極的に活用して、学習を続けていくことが重要です。
10. まとめ
本記事では、Docker Desktop for Windowsのインストールから、WSL 2の有効化、そしてDockerの基本的なCLI操作、Dockerfile、Docker Compose、GUIの使い方まで、詳細に解説しました。
Docker Desktop for Windowsは、WindowsユーザーがDockerの強力な機能を最大限に活用するための優れたツールです。特にWSL 2バックエンドは、Windows環境でありながらLinuxネイティブに近いパフォーマンスと互換性を提供し、開発体験を大きく向上させます。
- Dockerは、アプリケーションとその依存関係をコンテナとしてパッケージ化し、環境差異を吸収します。
- Docker Desktop for Windowsは、WSL 2またはHyper-Vを利用してWindows上にDocker環境を構築します。
- インストールには、適切なWindowsバージョンとWSL 2の有効化(およびBIOSでの仮想化機能有効化)が必要です。
docker pull
でイメージを取得し、docker run
でコンテナを起動します。docker ps
,docker stop
,docker rm
などでコンテナを管理します。-it
,-d
,-p
,-v
,--name
といったdocker run
のオプションは、コンテナの振る舞いを制御するために非常に重要です。- Dockerfileを使えば、イメージのビルド手順をコード化して再現性を高められます。
- Docker Composeを使えば、複数コンテナのアプリケーションをまとめて管理できます。
- Docker Desktop GUIは、コンテナやイメージの管理を視覚的に行うのに役立ちます。
- WSL 2関連のエラー、ポート競合、ディスク容量不足などが一般的な問題ですが、適切な手順で解決可能です。
この記事で紹介したコマンドや手順は、Dockerを使い始める上での基礎となります。これらの基本操作を習得すれば、様々なアプリケーションをコンテナ化し、開発、テスト、デプロイのワークフローを効率化できるようになるでしょう。
Dockerは現代のソフトウェア開発・運用において非常に重要な技術です。ぜひこの機会にDocker Desktop for Windowsを使いこなせるようになり、コンテナ技術の恩恵を享受してください。