はじめに|Dockerってなに?なんで学ぶの?
「Dockerってよく聞くけど、結局なんなの?」
「仮想環境って難しそう……」
そんな風に思ったこと、ありませんか?
この記事では、プログラミング初心者でも理解しやすいように、Dockerの基本と使い方をやさしく解説していきます。
💡Dockerは“動く環境”ごとアプリを持ち運べるツール
プログラミングやアプリ開発をしていると、こんな経験をすることがあります。
- 「自分のパソコンでは動いたのに、他の人の環境では動かない…」
- 「開発に必要なツールのインストールでつまずいた…」
- 「新しいプロジェクトのたびに環境構築するのが面倒…」
これらの“開発あるある”を解決してくれるのが、Dockerです。
Dockerは、アプリが動くのに必要な環境(OS、ライブラリ、設定など)を、丸ごと一つのパッケージにしてくれるツールです。このパッケージは「コンテナ」と呼ばれ、どのパソコンでも同じように動くのが特徴です。
🧰「環境構築のめんどう」をなくそう
たとえばPythonアプリを作るとき、
- Python本体をインストールして…
- 必要なライブラリを入れて…
- バージョンが合わないとエラーが出て…
と、最初の一歩でつまづくことがよくあります。
でもDockerを使えば、その環境をあらかじめ用意してある設計図(Dockerfile)から、一発で自動構築できるんです。
つまり「環境構築のやり直し」や「バージョンの違いによるトラブル」が激減します。
🎯この記事でわかること
この記事では、以下のような内容をわかりやすく解説していきます。
- Dockerの基本概念と使い方
- 簡単なコンテナの作成方法
- DockerfileやComposeによる仮想環境の設計
- よく使うコマンドと操作方法
「自分のアプリを誰でも動かせるようにしたい」
「もっとスムーズに環境構築したい」
そんな方にピッタリな内容になっています。
それではさっそく、Dockerの世界へ一緒に入っていきましょう!
1. Dockerとは?コンテナとは?
まず最初に、「Docker」と「コンテナ」の意味をしっかり押さえておきましょう。
🐳 Dockerは“アプリを動かすための仮想環境づくり”を助けるツール
Dockerとは、アプリを動かすのに必要な環境をパッケージ化し、どこでも同じように動かせるようにするためのプラットフォームです。
この環境は「コンテナ」と呼ばれ、コンピューターの中にもう一つの仮想的なコンピューターを作るイメージです。
たとえば、あるWebアプリを作るときに、
- UbuntuというOS上で
- PythonとFlaskがインストールされていて
- 特定の設定ファイルが存在して…
という状態が必要だったとします。
この状態を1つの“箱”にしておいて、他のPCでもそのまま再現できる。
それを可能にしてくれるのが、Dockerです。
📦 コンテナ=“軽量な仮想環境”
Dockerが作る「コンテナ」は、従来の「仮想マシン(VM)」と比べて、ずっと軽くて高速です。
| 比較項目 | 仮想マシン(VM) | コンテナ(Docker) |
|---|---|---|
| 起動速度 | 数十秒〜数分 | 数秒以下 |
| リソース使用量 | 多い(OSまるごと起動) | 少ない(OS共有) |
| 共通点 | 仮想的な環境を作る | 同上 |
仮想マシンはOSごと仮想化しますが、DockerのコンテナはホストOSのカーネルを共有し、必要な部分だけを仮想化します。そのため、軽くて早いんです。
🧱 コンテナの中には何が入ってるの?
コンテナには、以下のようなものが含まれています。
- アプリケーション本体(Pythonスクリプトなど)
- 実行に必要なライブラリやツール(Flaskやrequestsなど)
- 必要な設定(環境変数や設定ファイル)
- 実行するためのOS部分(最低限のUbuntuなど)
つまり、「このコンテナを使えば、アプリが確実に動く」という状態をまるごと用意しておけるのです。
🚀 開発・本番どこでも“同じように動く”のが強み
Dockerが支持される最大の理由は、**「どこでも同じように動く」**という点です。
- 開発環境(あなたのPC)
- テスト環境(社内のサーバー)
- 本番環境(AWSなどのクラウド)
これらすべてで、同じコンテナイメージを使えば動作が一致するため、「環境による動作の違い」がほとんどなくなります。

次は、Dockerを使うことで得られる具体的なメリットを見ていきましょう。開発のどんな場面で役立つのかを、わかりやすく紹介します!
2. Dockerを使うメリットとは?
ここからは、実際にDockerを使うことで**どんな良いことがあるのか?**を具体的に見ていきましょう。
✅ 1. 環境構築のトラブルが激減する
「自分のパソコンでは動いたのに、他の人の環境では動かない…」
これは開発現場でよくある悩みですよね。
でもDockerを使えば、アプリが動くために必要な環境をすべて“コンテナ”にまとめて共有できるので、チーム全員が同じ環境で作業できます。
つまり、「ライブラリのバージョン違い」や「OS依存の問題」といった環境差トラブルがなくなるんです。
✅ 2. スピーディーに環境を準備できる
Dockerなら、一度作った環境は「Dockerfile」や「docker-compose.yml」などの設計ファイルとして保存できます。
このファイルさえあれば、コマンド一発で同じ環境を何度でも再現可能。
プロジェクトごとに環境を切り替えるのもスムーズです。
💡たとえば…
「Python 3.10+Flaskの環境」と「Node.js 18+Expressの環境」を簡単に切り替えられます。
✅ 3. 本番環境と開発環境の差がなくなる
Dockerコンテナは、開発中の環境そのままで本番にも持っていけます。
つまり「開発では動いたのに、本番サーバーで動かない!」という悲劇を防げます。
さらにAWS・GCP・Azureといったクラウド環境でもDockerは標準的に使われているため、そのままデプロイ(公開)できる点も大きな強みです。
✅ 4. コンテナを何個でも複製できる(スケーラビリティ)
Dockerは「コンテナをコピーして並列に実行する」ことが簡単にできます。
- Webアプリのアクセスが増えたら複数コンテナで負荷分散
- テスト用に新しいコンテナを一時的に立てて確認
- 複数のバージョンのアプリを並行して動かす
といったことがスピーディーに実現できるのです。
✅ 5. バージョン管理や自動化に強い(Infrastructure as Code)
Dockerfileやdocker-compose.ymlのように、環境構築をコードで管理できるのもDockerの魅力。
- Gitでバージョン管理できる
- Pull Requestでレビューできる
- CI/CDに組み込んで自動構築・自動テストが可能
これが「Infrastructure as Code(インフラのコード化)」という考え方です。
✅ 6. 豊富なイメージがすぐ使える(Docker Hub)
Docker公式の「Docker Hub」には、すぐに使える便利なコンテナイメージが多数用意されています。
例えば…
- Python/Node.js/Rubyなど各種プログラミング言語
- MySQL/PostgreSQL/Redisなどのデータベース
- nginx/ApacheなどのWebサーバー
これらを**docker pullコマンド一発で導入可能**。
環境構築がとても楽になります!

このように、Dockerは開発の「めんどくさい」を減らしてくれる、頼れるツールなんです。
次は、Dockerを実際に使うための基本操作を見ていきましょう!
3. Dockerの基本操作を覚えよう
ここからは、Dockerを実際に動かしてみるために必要な基本的な操作コマンドを紹介していきます。
まずは「Docker Desktop」のインストールから始めましょう。
🧰 Docker Desktopをインストールしよう
Dockerを使うには、まずDocker Desktopというアプリをインストールする必要があります。これは、WindowsやMacでDockerを動かすための公式ツールです。
✅ インストール手順(Windows / Mac 共通)
- Docker公式サイトにアクセス
- 自分のOSに合ったインストーラーをダウンロード
- インストーラーを実行してインストール
- 再起動後、Docker Desktopを起動すれば準備完了!
※ インストール後、docker --versionでバージョンが表示されればOKです。
🐳 よく使うDockerコマンド一覧
ここでは、初心者でも覚えておきたい基本的なDockerコマンドを一挙にご紹介します。
🔹 1. イメージを取得する(docker pull)
docker pull hello-world
Docker Hubからhello-worldというイメージ(アプリ)をダウンロードします。
🔹 2. コンテナを起動する(docker run)
docker run hello-world
このコマンドで、イメージからコンテナを起動します。hello-worldは最もシンプルなテスト用イメージで、起動すると自動で停止します。
🔹 3. 起動中のコンテナを確認(docker ps)
docker ps
現在動いているコンテナの一覧を表示します。
🔹 4. 停止中も含めたコンテナを確認(docker ps -a)
docker ps -a
過去に動かしたことのあるコンテナも含め、すべて表示します。
🔹 5. コンテナを削除する(docker rm)
docker rm <コンテナ名またはID>
不要になったコンテナを削除します。
🔹 6. イメージを削除する(docker rmi)
docker rmi <イメージ名>
使わないDockerイメージを削除します。
🔹 7. コンテナの中に入る(docker exec)
docker exec -it <コンテナ名> bash
Linuxコンテナ内にログインして、手動操作することができます。
🔹 8. ポートを指定してWebアプリを起動
docker run -d -p 8080:80 nginx
このコマンドでnginx(Webサーバー)を起動し、ローカルの8080番ポートからアクセスできるようにします。
🧪 実践:hello-worldを実行してみよう
まずはDockerが正しく動作しているかどうかを確認してみましょう!
docker run hello-world
実行すると、次のようなメッセージが表示されれば成功です👇
Hello from Docker!
This message shows that your installation appears to be working correctly.
これでDockerの動作確認は完了です!🎉

次は、Dockerfileを使って、自分専用の環境(イメージ)を作る方法を解説していきます。
4. Dockerfileでカスタムイメージを作成
ここからは、Dockerの醍醐味ともいえる**Dockerfile(ドッカーファイル)**の使い方を解説していきます。
Dockerfileを使えば、自分だけの開発環境やアプリ実行環境を自由にカスタマイズして再現することができます!
🧱 Dockerfileってなに?
Dockerfileとは、**コンテナの元となる“イメージ”を自動生成するためのレシピ(設計図)**です。
たとえば以下のような内容を記述します:
- どのOSをベースにするか(UbuntuやAlpineなど)
- どんなパッケージをインストールするか(Pythonやpipなど)
- アプリのソースコードをどこにコピーするか
- コンテナを起動したら何を実行するか
このDockerfileをもとに、コマンド一つで**まったく同じ仮想環境(イメージ)**を作ることができます。
✍️ 基本的なDockerfileの例(Pythonアプリの場合)
以下は、シンプルなPythonアプリを動かすためのDockerfileの一例です。
# ベースとなる公式Pythonイメージを指定
FROM python:3.10-slim
# 作業ディレクトリを指定
WORKDIR /app
# ローカルのファイルをコンテナ内にコピー
COPY requirements.txt ./
COPY app.py ./
# ライブラリをインストール
RUN pip install --no-cache-dir -r requirements.txt
# アプリを実行するコマンドを指定
CMD ["python", "app.py"]
🏗 Dockerfileからイメージをビルドする
Dockerfileができたら、次のコマンドでイメージを作成(ビルド)します。
docker build -t my-python-app .
ポイントは以下の2つ:
-t my-python-app: 作成するイメージに名前を付けます(任意の名前でOK).(ドット): Dockerfileがある現在のディレクトリを意味します
🚀 作ったイメージからコンテナを起動!
ビルドが完了したら、次のコマンドで実行してみましょう。
docker run my-python-app
これで、自分のアプリを動かす完全再現可能な環境ができあがります!
🧠 よく使うDockerfile命令まとめ
| 命令 | 説明 |
|---|---|
FROM | ベースとなるイメージを指定 |
WORKDIR | 作業ディレクトリを指定 |
COPY | ファイルをコンテナ内にコピー |
RUN | イメージ作成時に実行するコマンド |
CMD | コンテナ実行時に起動するコマンド |
ENV | 環境変数の設定 |
EXPOSE | コンテナ内で開くポートを指定(任意) |
🔍「RUN」は“イメージ作成中”に実行、「CMD」は“コンテナ起動時”に実行されるという違いがあります。

これで、Dockerfileを使って自分だけの環境を作る基本がわかりました!
5. 複数コンテナ管理はDocker Composeで!
アプリ開発では、Webアプリとデータベースをセットで動かしたい場面がよくありますよね。
そんなときに活躍するのが、**Docker Compose(ドッカーコンポーズ)**です!
Docker Composeを使えば、複数のコンテナをまとめて一括管理できるようになります。
🧩 Docker Composeとは?
Docker Composeは、YAML形式の設定ファイル(docker-compose.yml)を使って、複数のサービス(コンテナ)を定義・管理できるツールです。
- Webアプリ(Flaskなど)
- データベース(MySQLやPostgreSQL)
- キャッシュサーバー(Redisなど)
などの複数サービスをひとつのプロジェクトとして起動/停止/再構築できます。
📝 docker-compose.ymlの基本構成
以下は、Flaskアプリ+MySQLデータベースを管理するためのシンプルな例です。
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test_db
ports:
- "3306:3306"
🔍 主な要素の説明:
| 項目 | 内容 |
|---|---|
services | 複数のサービス(コンテナ)を定義 |
build | カレントディレクトリのDockerfileからイメージをビルド |
image | 既存のDockerイメージ(例:MySQL)を指定 |
ports | ホストとコンテナ間のポートマッピング |
volumes | ローカルのフォルダとコンテナ内フォルダを同期(ファイル共有) |
environment | 環境変数の指定(DBパスワードなど) |
depends_on | 起動順序の指定(webはdbより後に起動) |
🚀 docker-composeの基本コマンド
設定ファイルができたら、次のようなコマンドで操作できます。
🔹 サービスを一括起動(バックグラウンドで)
docker compose up -d
🔹 サービスを停止
docker compose down
🔹 コンテナのログを確認
docker compose logs
🔹 特定サービスだけ再起動
docker compose restart web
📦 DockerfileとComposeはどう違う?
| ツール名 | 役割 |
|---|---|
| Dockerfile | 1つのコンテナの設計図を記述 |
| docker-compose.yml | 複数コンテナの構成や関係性を記述する |
つまり、**Dockerfileが“家の設計図”で、Composeは“町の配置図”**みたいなイメージです!
🧪 実践Tips:Composeを使えば開発効率がぐんと上がる!
たとえば、次のようなケースでもComposeは大活躍します。
- WebアプリとDBを一発起動してすぐ開発に取りかかる
- テスト環境を構築するたびに手作業ゼロで準備
- 複数人でチーム開発する際に環境を統一
これらが「コマンド一発」でできるので、開発の初速がグッと速くなるんです!
6. よくあるエラーと解決法(ミニQ&A)
Dockerを使い始めると、最初のうちは**「エラーで止まってしまった!」という場面によく出会います。
でも大丈夫、よくあるトラブルはポイントを押さえればすぐに解決**できます。
ここでは、初心者がつまずきやすいエラーとその対処法をQ&A形式で紹介します。
❓ Q1. docker: command not found って出るんだけど?
A. Dockerが正しくインストールされていないか、パスが通っていない可能性があります。
🔍確認ポイント:
- Docker Desktopをインストールしているか?
- ターミナルを再起動したか?
docker --versionでバージョンが表示されるか?
❓ Q2. permission denied って何?
A. ファイルの実行権限が足りない or sudo権限が必要な場面です。
🔧対処法:
- LinuxやWSLであれば、コマンドの前に
sudoを付けてみましょう。 - シェルスクリプトなどの実行ファイルには
chmod +xを付けるとよいです。
❓ Q3. ポートが使えないって怒られた!(port is already allocated)
A. 同じポート番号を別のコンテナやプロセスがすでに使っている状態です。
🔍解決方法:
- まず現在動作中のコンテナを確認 bashコピーする編集する
docker ps - 重複しているコンテナを停止または削除 bashコピーする編集する
docker stop <コンテナ名> && docker rm <コンテナ名> - 別のポート番号に変更して実行(例:
-p 8081:80)
❓ Q4. コンテナがすぐ停止してしまう…
A. 実行対象のアプリ(例:PythonスクリプトやWebサーバー)がすぐに終了してしまっている可能性があります。
💡ポイント:
docker logs <コンテナ名>でログを確認- DockerfileのCMDやENTRYPOINTに問題がないか確認
- Webサーバーなど「継続して動き続けるアプリ」にしてみましょう(例:Flaskアプリなど)
❓ Q5. Docker Composeが動かない or command not found
A. docker composeは比較的新しいDockerバージョンで標準搭載されていますが、古い環境では docker-compose という別コマンドで動作します。
✅確認ポイント:
docker compose version # 新しい書き方(スペース)
docker-compose version # 古い書き方(ハイフン)
どちらが使えるか試してみてください。最新版のDocker Desktopでは前者が推奨されています。
🔧 その他の便利コマンド
| コマンド例 | 説明 |
|---|---|
docker logs <コンテナ名> | コンテナのログ(エラーメッセージ)を確認 |
docker inspect <コンテナ名> | コンテナの詳細情報を確認 |
docker network ls | ネットワーク一覧を確認 |
docker volume ls | ボリューム(保存領域)の一覧を確認 |

ちょっとしたトラブルも、原因を知れば解決できます!
焦らず一つずつ確認してみましょう 💡
7. まとめ|最初の一歩をDockerで踏み出そう
ここまで読んでいただき、ありがとうございました!
この記事では、Dockerの基本から導入方法、コマンド操作、DockerfileやComposeの使い方まで、初めての方でも理解しやすいように解説してきました。
🧭 Dockerって結局どんなもの?
- 「動かすのが難しい開発環境」をコンテナで簡単に再現・共有できる
- 自分だけの仮想環境をコードで定義して管理できる(Infrastructure as Code)
- ローカル・チーム開発・クラウド運用、すべてに活用できる万能ツール
🚀 学んだことをまとめると…
| 学んだ内容 | 一言まとめ |
|---|---|
| Dockerの基本概念 | 軽量な仮想環境=コンテナを使う技術 |
| 基本的なコマンド | docker run, docker ps, docker execなど |
| Dockerfileで環境構築の自動化 | 設定ファイルから誰でも同じ環境が作れる! |
| Docker Composeで複数サービス管理 | Web+DBなど、複数構成を一括で動かせる! |
| よくあるエラーと対処法 | docker logsやinspectで落ち着いて調査しよう |
🎯 まずは試してみよう!
最初はhello-worldコンテナを動かしてみるだけでもOKです。
その後、ちょっとしたPythonスクリプトやWebアプリをDocker化してみれば、
「おおっ!自分だけの開発環境ができた!」という感動が味わえますよ。
📌 今後のステップとして…
- Dockerfileを応用して複雑な環境を構築してみる
docker composeで複数のサービスを連携させる- AWSやGCPなどクラウド上で本番運用に挑戦する
といった流れでスキルアップしていけます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。