※本ページにはプロモーション(広告)が含まれています
「Dockerって聞いたことはあるけど、何ができるの?」「インストールしてみたいけど、難しそう…」そんな疑問をお持ちではありませんか?
Dockerは、アプリケーションの開発・テスト・デプロイを劇的に効率化できるコンテナ技術です。2026年現在、Web開発やシステム運用の現場ではほぼ必須のツールとなっており、個人の開発環境構築にも広く使われています。
この記事では、Dockerを初めて触る方でも迷わないように、インストールから基本的なコンテナ操作、Docker Composeによる複数コンテナ管理まで、ステップバイステップで丁寧に解説します。実際のコマンド例をそのまま入力すれば動くように書いていますので、ぜひ手を動かしながら読み進めてください。
この記事でわかること
- Dockerとは何か、コンテナと仮想マシンの違い
- Docker Desktop(Windows/Mac)のインストール手順
- docker run、docker ps、docker stopなど基本コマンドの使い方
- Dockerfileを書いて独自のイメージを作成する方法
- Docker Composeで複数コンテナをまとめて管理する方法
- 実践的なWebアプリ環境構築の具体例

Dockerとは?初心者にもわかる基本概念
Dockerの概要
Dockerとは、アプリケーションとその実行環境をまるごと「コンテナ」というパッケージに詰め込んで、どこでも同じように動かせるようにする技術です。
たとえば、自分のパソコンで動いていたプログラムを別のパソコンやサーバーに持っていくと、「あれ、なぜか動かない…」ということがよく起こります。これは、OSのバージョンやインストールされているライブラリの違いが原因です。
Dockerを使えば、アプリケーションに必要なファイル・ライブラリ・設定をすべてコンテナに含められるため、「自分の環境では動くのに…」という問題がなくなります。
コンテナと仮想マシン(VM)の違い
「環境をまるごとパッケージにする」と聞くと、仮想マシン(VM)を思い浮かべる方もいるかもしれません。しかし、コンテナと仮想マシンには大きな違いがあります。
| 比較項目 | コンテナ(Docker) | 仮想マシン(VM) |
|---|---|---|
| 起動速度 | 数秒で起動 | 数分かかる |
| サイズ | 数十MB〜数百MB | 数GB〜数十GB |
| OS | ホストOSのカーネルを共有 | ゲストOS丸ごと含む |
| リソース消費 | 軽い(CPU・メモリ節約) | 重い(専用リソースを確保) |
| 隔離レベル | プロセスレベル | ハードウェアレベル |
| 代表的なツール | Docker、Podman | VirtualBox、VMware、Hyper-V |
簡単にまとめると、仮想マシンは「パソコンの中にもう1台パソコンを作る」イメージで、コンテナは「パソコンの中に軽い作業部屋を作る」イメージです。コンテナはOSを丸ごと含まない分、圧倒的に軽くて速いのが最大の特長です。
Dockerの主要な用語
Dockerを使う上で知っておきたい基本用語を整理しておきましょう。
| 用語 | 意味 | たとえ話 |
|---|---|---|
| イメージ(Image) | コンテナの設計図・テンプレート | 料理のレシピ |
| コンテナ(Container) | イメージから作られた実行中の環境 | レシピから作った料理 |
| Dockerfile | イメージの作り方を記述したファイル | レシピを書いたメモ |
| Docker Hub | イメージの公開・共有サービス | レシピ共有サイト |
| ボリューム(Volume) | コンテナ外にデータを永続化する仕組み | 保存用の外付けハードディスク |
| Docker Compose | 複数コンテナをまとめて管理するツール | フルコース料理の献立表 |
Docker Desktopのインストール手順
Dockerを使うには、Docker Desktopというアプリケーションをインストールするのが最も簡単です。Windows、Mac、Linuxに対応しています。
Windowsへのインストール
事前準備:WSL 2の有効化
Windows版Docker DesktopはWSL 2(Windows Subsystem for Linux 2)をバックエンドとして使用します。まずWSL 2を有効にしましょう。
ステップ1:PowerShellを管理者として実行
スタートメニューで「PowerShell」と検索し、「管理者として実行」を選択します。
ステップ2:WSLを有効化するコマンドを実行
wsl --install
このコマンドで、WSL機能の有効化とUbuntuのインストールが自動的に行われます。完了後、パソコンの再起動を求められる場合があります。
ステップ3:再起動後、WSLのバージョンを確認
wsl --version
WSLバージョンが「2」であることを確認してください。
Docker Desktopのインストール
ステップ1:公式サイトからダウンロード
Docker公式サイトにアクセスし、「Download for Windows」ボタンをクリックしてインストーラーをダウンロードします。
ステップ2:インストーラーを実行
ダウンロードした「Docker Desktop Installer.exe」をダブルクリックして実行します。途中で「Use WSL 2 instead of Hyper-V」にチェックが入っていることを確認して進めてください。
ステップ3:インストール完了後、Docker Desktopを起動
インストールが完了したら、Docker Desktopを起動します。タスクバーにクジラのアイコンが表示され、「Docker Desktop is running」と表示されればOKです。

Macへのインストール
MacへのDocker Desktopのインストールは非常に簡単です。
ステップ1:公式サイトからダウンロード
Docker公式サイトにアクセスし、お使いのMacに合ったバージョンを選択します。
- Apple Silicon(M1/M2/M3/M4):「Mac with Apple chip」を選択
- Intel Mac:「Mac with Intel chip」を選択
ステップ2:dmgファイルを開いてインストール
ダウンロードした「Docker.dmg」をダブルクリックし、Dockerアイコンを「Applications」フォルダにドラッグ&ドロップします。
ステップ3:Docker Desktopを起動
アプリケーションフォルダからDocker Desktopを起動します。初回起動時にシステムの許可を求められるので、パスワードを入力して許可してください。メニューバーにクジラのアイコンが表示されれば起動完了です。
インストールの確認
Windows・Mac共通で、ターミナル(Windowsの場合はPowerShellまたはコマンドプロンプト)を開き、以下のコマンドを実行してバージョンが表示されれば、インストールは成功です。
docker --version
# 出力例: Docker version 27.x.x, build xxxxxxx
docker compose version
# 出力例: Docker Compose version v2.x.x
さらに、動作テストとして以下のコマンドを実行してみましょう。
docker run hello-world
「Hello from Docker!」というメッセージが表示されれば、Dockerは正常に動作しています。
Dockerの基本コマンドを覚えよう
Dockerを操作するための基本コマンドを、実際に使いながら学んでいきましょう。ここでは最もよく使う10個のコマンドを紹介します。
イメージの取得:docker pull
Docker Hubから既存のイメージをダウンロードするコマンドです。
# Nginxの公式イメージを取得
docker pull nginx
# 特定バージョンを指定して取得
docker pull nginx:1.27
# 軽量版のAlpineベースを取得
docker pull nginx:alpine
タグ(コロンの後ろ)を指定しない場合は、自動的に「latest(最新版)」がダウンロードされます。
コンテナの起動:docker run
docker run はDockerで最も使用頻度の高いコマンドです。イメージからコンテナを作成して起動します。
# 基本的な起動
docker run nginx
# バックグラウンドで起動(-d: デタッチモード)
docker run -d nginx
# ポート転送付きで起動(ホスト8080 → コンテナ80)
docker run -d -p 8080:80 nginx
# 名前を付けて起動
docker run -d -p 8080:80 --name my-nginx nginx
上記の最後のコマンドを実行した後、ブラウザで http://localhost:8080 にアクセスすると、Nginxのウェルカムページが表示されます。
docker runの主要オプション
| オプション | 意味 | 使用例 |
|---|---|---|
-d |
バックグラウンド実行 | docker run -d nginx |
-p ホスト:コンテナ |
ポート転送 | docker run -p 8080:80 nginx |
--name |
コンテナ名を指定 | docker run --name web nginx |
-v ホスト:コンテナ |
ボリュームマウント | docker run -v ./html:/usr/share/nginx/html nginx |
-e |
環境変数を設定 | docker run -e MYSQL_ROOT_PASSWORD=pass mysql |
--rm |
停止後に自動削除 | docker run --rm nginx |
-it |
対話モード(ターミナル接続) | docker run -it ubuntu bash |
コンテナの一覧表示:docker ps
# 実行中のコンテナを表示
docker ps
# 停止中のコンテナも含めてすべて表示
docker ps -a
出力例:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" Up 5 minutes 0.0.0.0:8080->80/tcp my-nginx
コンテナの停止・再起動・削除
# コンテナを停止(名前またはIDで指定)
docker stop my-nginx
# 停止したコンテナを再起動
docker start my-nginx
# コンテナを削除(停止してから削除)
docker stop my-nginx
docker rm my-nginx
# 強制削除(実行中でも削除)
docker rm -f my-nginx
コンテナの中に入る:docker exec
実行中のコンテナの中でコマンドを実行したい場合に使います。
# コンテナの中でbashを起動(対話モード)
docker exec -it my-nginx bash
# コンテナの中で直接コマンドを実行
docker exec my-nginx cat /etc/nginx/nginx.conf
コンテナ内のbashから抜けるには exit と入力してEnterを押します。
コンテナのログを確認:docker logs
# ログを表示
docker logs my-nginx
# リアルタイムでログを追跡(Ctrl+Cで終了)
docker logs -f my-nginx
# 直近20行のみ表示
docker logs --tail 20 my-nginx
イメージの一覧と削除
# ダウンロード済みイメージの一覧
docker images
# 不要なイメージを削除
docker rmi nginx:latest
# 使われていないイメージを一括削除
docker image prune -a
基本コマンド一覧まとめ
| コマンド | 用途 |
|---|---|
docker pull イメージ名 |
イメージをダウンロード |
docker run オプション イメージ名 |
コンテナを作成して起動 |
docker ps |
実行中のコンテナ一覧 |
docker stop コンテナ名 |
コンテナを停止 |
docker start コンテナ名 |
停止したコンテナを再起動 |
docker rm コンテナ名 |
コンテナを削除 |
docker exec -it コンテナ名 bash |
コンテナ内に入る |
docker logs コンテナ名 |
ログを確認 |
docker images |
イメージ一覧 |
docker rmi イメージ名 |
イメージを削除 |
Dockerfileの書き方入門
Docker Hubの公式イメージをそのまま使うだけでなく、自分専用のカスタムイメージを作成することもできます。そのために使うのが「Dockerfile」です。
Dockerfileとは
Dockerfileとは、Dockerイメージを自動的にビルド(構築)するための設計書です。テキストファイルに「ベースイメージは何を使うか」「どんなファイルをコピーするか」「どんなコマンドを実行するか」を記述します。

基本的なDockerfileの構成
シンプルなNode.jsアプリケーション用のDockerfileを例に、各命令の意味を解説します。
# ベースイメージを指定
FROM node:20-alpine
# 作業ディレクトリを設定
WORKDIR /app
# パッケージファイルをコピー
COPY package*.json ./
# 依存パッケージをインストール
RUN npm install --production
# アプリケーションのソースコードをコピー
COPY . .
# コンテナがリッスンするポートを記載
EXPOSE 3000
# コンテナ起動時に実行するコマンド
CMD ["node", "server.js"]
主要な命令の解説
| 命令 | 役割 | 使い方のポイント |
|---|---|---|
FROM |
ベースイメージの指定 | alpineタグを使うとイメージが軽量になる |
WORKDIR |
作業ディレクトリの設定 | 以降のコマンドはこのディレクトリ内で実行される |
COPY |
ホストのファイルをコンテナにコピー | 不要ファイルは.dockerignoreで除外 |
RUN |
ビルド時にコマンドを実行 | パッケージのインストールなどに使用 |
EXPOSE |
使用ポートの宣言 | ドキュメント的な役割(実際の公開は-pオプション) |
CMD |
コンテナ起動時の実行コマンド | Dockerfileの最後に1つだけ記述 |
ENV |
環境変数を設定 | ENV NODE_ENV=production |
Dockerfileからイメージをビルドする
Dockerfileを作成したら、以下のコマンドでイメージをビルドします。
# イメージをビルド(-t でイメージ名:タグを指定)
docker build -t my-node-app:1.0 .
# ビルドしたイメージを確認
docker images
# ビルドしたイメージからコンテナを起動
docker run -d -p 3000:3000 --name my-app my-node-app:1.0
コマンド末尾の .(ドット)は「現在のディレクトリにあるDockerfileを使う」という意味です。
.dockerignoreファイル
Dockerイメージに含めたくないファイルがある場合は、.dockerignore ファイルを作成してリストアップします。Gitの .gitignore と同じ考え方です。
node_modules
npm-debug.log
.git
.gitignore
Dockerfile
docker-compose.yml
.env
README.md
特に node_modules や .git はサイズが大きくなりがちなので、必ず除外しましょう。
Docker Composeで複数コンテナを管理する
実際のアプリケーション開発では、Webサーバー、データベース、キャッシュなど複数のサービスを組み合わせて使うことがほとんどです。Docker Composeを使えば、これらを1つの設定ファイルで一括管理できます。
Docker Composeとは
Docker Composeは、複数のコンテナの構成をYAMLファイル(compose.yml)に定義し、一括で起動・停止・管理できるツールです。Docker Desktopをインストールすると、Docker Composeも一緒に使えるようになります。
compose.ymlの書き方
WordPressとMySQLを組み合わせた環境を例に、compose.ymlの書き方を見てみましょう。
# compose.yml
services:
# WordPressサービス
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
depends_on:
- db
restart: unless-stopped
# MySQLデータベースサービス
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
MYSQL_ROOT_PASSWORD: rootpassword
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
# データ永続化用ボリューム
volumes:
wp_data:
db_data:
compose.ymlの主要な設定項目
| 設定項目 | 説明 |
|---|---|
services |
各コンテナ(サービス)を定義するセクション |
image |
使用するDockerイメージ |
ports |
ポート転送の設定(ホスト:コンテナ) |
environment |
環境変数の設定 |
volumes |
データの永続化(ボリュームマウント) |
depends_on |
サービスの起動順序を指定 |
restart |
コンテナが停止したときの再起動ポリシー |
build |
Dockerfileからビルドする場合のパス指定 |
Docker Composeの基本コマンド
# すべてのサービスをバックグラウンドで起動
docker compose up -d
# サービスの状態を確認
docker compose ps
# ログを確認
docker compose logs
# 特定サービスのログだけ確認
docker compose logs wordpress
# すべてのサービスを停止
docker compose down
# データ(ボリューム)も含めて完全削除
docker compose down -v
上記のWordPress環境を起動すると、ブラウザで http://localhost:8080 にアクセスするだけでWordPressのセットアップ画面が表示されます。データベースのインストールや設定は一切不要です。
実践!Webアプリケーション開発環境を構築しよう
ここまで学んだ内容を活用して、より実践的な開発環境を構築してみましょう。Node.js(Express)+ Redis + Nginxの構成を例に、Docker Composeで環境を構築します。
プロジェクト構成
my-webapp/
├── compose.yml # Docker Compose設定ファイル
├── app/
│ ├── Dockerfile # Node.jsアプリ用Dockerfile
│ ├── package.json # Node.js依存パッケージ定義
│ └── server.js # アプリケーション本体
└── nginx/
└── default.conf # Nginx設定ファイル
compose.ymlの作成
# compose.yml
services:
# Nginxリバースプロキシ
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
restart: unless-stopped
# Node.jsアプリケーション
app:
build: ./app
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
depends_on:
- redis
restart: unless-stopped
# Redisキャッシュ
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
restart: unless-stopped
volumes:
redis_data:
起動してみよう
# プロジェクトディレクトリに移動
cd my-webapp
# イメージのビルドとコンテナの起動を同時に実行
docker compose up -d --build
# 全サービスが正常に動いているか確認
docker compose ps
# ブラウザで http://localhost にアクセスして動作確認
たったこれだけのコマンドで、Nginx + Node.js + Redisの3つのサービスが連携した開発環境が完成します。個別にインストール・設定する必要がないのがDocker Composeの大きなメリットです。
Dockerを使う上でのベストプラクティス
Dockerを効率的かつ安全に使うためのポイントをまとめます。
イメージサイズを小さくする
- 軽量ベースイメージを使う:
node:20-alpineのようにalpineタグを選ぶ(通常の1/5〜1/10のサイズ) - マルチステージビルドを使う:ビルド用のステージと実行用のステージを分けることで、最終イメージにビルドツールが含まれなくなる
- .dockerignoreを活用する:不要なファイルをCOPYしないようにする
セキュリティに配慮する
- rootユーザーで動かさない:Dockerfile内で
USER命令を使って非rootユーザーに切り替える - 機密情報をイメージに含めない:パスワードやAPIキーは環境変数で渡す(
-eオプション、.envファイル) - 公式イメージを使う:Docker Hubで「Official Image」マークが付いたイメージを優先する
開発効率を上げるコツ
- ボリュームマウントを活用する:ソースコードをボリュームでマウントすれば、コードを変更するたびにビルドし直す必要がない
- 不要なコンテナ・イメージを定期的に掃除する:
docker system pruneで使われていないリソースを一括削除 - Docker Desktop のダッシュボードを活用する:GUIでコンテナの状態確認、ログ閲覧、リソース使用量の監視ができる
よくある質問(FAQ)
Q1. Dockerは無料で使えますか?
Docker Desktop は、個人利用、教育目的、小規模企業(従業員250人未満かつ年間収益1000万ドル未満)であれば無料で使えます。大企業での商用利用には有料サブスクリプション(Pro/Team/Business)が必要です。Docker Engine自体はオープンソースで完全無料です。
Q2. DockerはWindowsのHomeエディションでも使えますか?
はい、使えます。以前はPro/Enterprise/Educationエディションが必要でしたが、WSL 2バックエンドの導入により、Windows 10/11 Homeエディションでも問題なくDocker Desktopを使用できます。
Q3. DockerとKubernetes(クバネティス)は何が違うのですか?
Dockerは「コンテナを作って動かす」ためのツールで、Kubernetesは「大量のコンテナを管理・運用する」ためのツール(オーケストレーションツール)です。開発環境であればDockerだけで十分ですが、本番環境で多数のコンテナを自動でスケーリング・監視したい場合にKubernetesが活躍します。
Q4. コンテナを停止するとデータは消えますか?
docker stop でコンテナを停止しただけではデータは消えません。ただし、docker rm でコンテナを削除するとコンテナ内のデータは消失します。重要なデータはボリューム(Volume)を使って永続化しましょう。compose.ymlの volumes セクションで定義できます。
Q5. Docker Desktopが重くてパソコンが遅くなるのですが、対策はありますか?
Docker Desktopの設定(Settings → Resources)で、割り当てるCPUコア数やメモリ量を制限できます。初期設定ではリソースを多く使う設定になっている場合があるので、メモリを4GB程度、CPUを2コア程度に制限すると改善することが多いです。
Q6. docker-compose.yml と compose.yml はどちらを使うべきですか?
Docker Compose V2(2023年以降の標準)では、compose.yml が推奨ファイル名です。旧バージョン(V1)では docker-compose.yml が使われていましたが、V2では docker compose(ハイフンなし)コマンドとともに compose.yml を使うのが標準です。どちらのファイル名でも動作しますが、新規プロジェクトでは compose.yml を使いましょう。
Q7. Dockerfileの FROM で指定するイメージはどう選べばいいですか?
基本的にはDocker Hubの公式イメージ(Official Imageマーク付き)を使いましょう。サイズを小さくしたい場合は alpine タグ、安定性を重視する場合は slim タグがおすすめです。特定のバージョンを指定する(例: node:20-alpine)ことで、予期せぬバージョンアップを防げます。
Q8. WindowsでDocker使用中に「WSL 2 installation is incomplete」とエラーが出ます
WSL 2のLinuxカーネルが最新でない可能性があります。PowerShellを管理者権限で開き、wsl --update を実行してください。それでも解決しない場合は、wsl --shutdown でWSLを再起動してからDocker Desktopを再起動してみてください。
まとめ
この記事では、Dockerの基本的な概念からインストール、コンテナ操作、Dockerfile、Docker Composeまで幅広く解説しました。最後に、重要なポイントを振り返りましょう。
この記事のまとめ
- Dockerはアプリケーションをコンテナとしてパッケージ化し、どの環境でも同じように動かせる技術
- コンテナは仮想マシンよりはるかに軽量・高速で、起動も数秒で完了する
- Docker Desktopをインストールするだけで、Windows・Macですぐに使い始められる
- 基本コマンドは
docker run、docker ps、docker stop、docker rmの4つを覚えればOK - Dockerfileで独自のイメージを作成し、Docker Composeで複数サービスをまとめて管理できる
- ベストプラクティス(軽量イメージ、セキュリティ、定期的な掃除)を意識して効率よく使おう
Dockerは最初はとっつきにくく感じるかもしれませんが、基本的なコマンドを覚えてしまえば、開発環境の構築が格段に楽になります。まずは docker run hello-world から始めて、少しずつ慣れていきましょう。
この記事が、Dockerを始める第一歩として参考になれば幸いです。わからないことがあれば、Docker公式ドキュメント(https://docs.docker.com/)も併せてご活用ください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!