Dockerとは?初心者でもわかる仮想コンテナ技術の基礎と使い方


1. Dockerとは?

仮想マシンとの違い

Dockerは、アプリケーションとその依存関係をひとまとめにして、どこでも同じように動作させることができるコンテナ型の仮想化技術です。従来の仮想マシン(VM)はOSごと仮想化するため、動作が重くなりがちですが、DockerはホストOS上で直接動作する軽量なコンテナであるため、起動が速く、リソースの消費も少ないのが特徴です。

コンテナの仕組み

コンテナとは、アプリケーション本体と必要なライブラリ、設定ファイルなどをパッケージ化したもので、他の環境に依存せずに実行できます。ホストOSのカーネルを共有することで、複数のコンテナを同時に実行しても効率的にリソースを活用できます。


2. Dockerを使うメリット

環境構築が簡単

Dockerでは、必要なアプリケーションやミドルウェアをまとめたイメージを作成し、すぐに同じ環境を構築できます。手動でのインストール作業が不要になります。

チーム開発に強い

Dockerイメージを共有することで、チーム全員が同じ開発環境を使うことができます。環境の違いによる「動かない」問題を防げます。

CI/CDとの相性が良い

Dockerは継続的インテグレーションやデプロイ(CI/CD)と非常に相性がよく、自動テストや本番反映をスムーズに行えます。


3. Dockerの基本用語

イメージとコンテナ

  • イメージ:アプリケーションの実行環境をまとめた設計図。
  • コンテナ:イメージを元に実行されるインスタンス(実体)。

Dockerfileとは?

Dockerfileは、イメージを構築するための設計図となるファイルです。インストール手順やコピーするファイルなどを記述します。

Docker Hubについて

Docker Hubは、Dockerイメージの共有・管理ができるクラウドサービスです。既存の人気イメージ(nginx, mysqlなど)も多数公開されています。


4. Dockerの始め方

インストール手順(Windows/Mac)

  1. Docker公式サイトからインストーラーをダウンロード
  2. ダウンロードしたファイルを実行してインストール
  3. 再起動後、ターミナルまたはPowerShellで docker --version を実行して確認

最初のコンテナ実行(Hello world)

docker run hello-world

上記コマンドでDockerが正しく動作しているか確認できます。


5. よく使うDockerコマンド一覧

  • docker ps:起動中のコンテナ一覧を表示
  • docker images:ローカルにあるイメージ一覧を表示
  • docker run:イメージからコンテナを起動
  • docker build:Dockerfileからイメージを作成
  • docker exec:起動中のコンテナ内でコマンドを実行
  • docker stop / docker start:コンテナの停止・再起動

6. 開発環境の例:PHP+MySQL+phpMyAdminをDockerで構築

version: '3'
services:
  web:
    image: php:8.1-apache
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: sample_db

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db

この構成を docker-compose.yml として保存し、docker-compose up を実行すれば、ローカルにPHPアプリ開発環境が即座に構築されます。


7. トラブル時の対処法

  • docker build でエラーが出た場合:Dockerfileの文法ミスを確認
  • コンテナが起動しない:ログ出力 docker logs [コンテナ名] を確認
  • ポートが競合している:他のサービスで使用中の可能性
  • ネットワークが繋がらない:docker network lsdocker network inspect で確認

Docker Composeで複数コンテナを管理する

Docker Composeとは、複数のDockerコンテナをまとめて定義・起動するためのツールです。docker-compose.yml(またはcompose.yml)ファイルに構成を記述し、docker compose upコマンド一つで全コンテナを起動できます。

Docker Composeの基本コマンド

コマンド説明
docker compose up全コンテナを起動(-dでバックグラウンド)
docker compose down全コンテナを停止・削除
docker compose logs全コンテナのログを表示
docker compose ps起動中のコンテナ一覧
docker compose exec起動中のコンテナ内でコマンド実行
docker compose buildDockerfileからイメージを再ビルド

Dockerと仮想マシン(VM)の違い

Dockerと仮想マシンはどちらもアプリケーションの実行環境を分離する技術ですが、仕組みが根本的に異なります。

比較項目Docker(コンテナ)仮想マシン(VM)
起動速度数秒数分
リソース消費軽量(数十MB〜)重い(数GB〜)
OSホストOSのカーネルを共有ゲストOSが個別に起動
分離レベルプロセスレベルハードウェアレベル
ポータビリティイメージで簡単に移動VMファイルが大きく移動コスト高
代表的なツールDocker, PodmanVirtualBox, VMware, Hyper-V

よくある質問(FAQ)

Q. DockerはWindowsでも使えますか?

Docker Desktopをインストールすれば、Windows 10/11(WSL2対応)で利用できます。WSL2(Windows Subsystem for Linux 2)がバックエンドとして動作するため、Linuxコンテナをそのまま実行可能です。

Q. Docker Desktopは無料ですか?

個人利用や小規模チーム(従業員250名未満かつ年間売上1000万ドル未満)は無料で利用できます。それ以上の規模の企業では有料のサブスクリプションが必要です。

Q. DockerとKubernetesの違いは何ですか?

Dockerは個々のコンテナを作成・実行するためのツールです。Kubernetes(K8s)は、多数のDockerコンテナを複数サーバーにまたがって自動管理(オーケストレーション)するためのプラットフォームです。個人開発やチーム開発ではDockerとDocker Composeで十分なケースが多く、大規模運用でKubernetesが選択されます。

Q. Dockerのコンテナを停止するとデータは消えますか?

コンテナを停止しただけではデータは消えませんが、コンテナを削除(docker rm)するとコンテナ内のデータは失われます。永続化が必要なデータはvolumesを使ってホスト側にマウントしてください。

Q. DockerでWordPressの開発環境は作れますか?

docker-compose.ymlにwordpress公式イメージとmysqlイメージを定義するだけで、数分でWordPressのローカル開発環境が構築できます。テーマやプラグインの開発に最適で、環境の再現性も高いため、チーム開発にも向いています。


8. まとめ

Dockerは、環境構築の手間を削減し、開発効率を大幅に向上させるツールです。初心者でも基本コマンドと構成ファイルの書き方を理解すれば、すぐにプロジェクトに活用できます。この記事をきっかけに、ぜひ実際に手を動かしてDockerの便利さを体感してみてください。

【楽天1位!】【新品】 2026年最新モデル … 【楽天1位!】【新品】 2026年最新モデル … ¥34,800 ASUS Vivobook X シリーズ ノートパソコン… ASUS Vivobook X シリーズ ノートパソコン… ¥129,800 【楽天1位常連・超700冠獲得】黒/白 モニ… 【楽天1位常連・超700冠獲得】黒/白 モニ… ¥13,999 【ふるさと納税】液晶モニター31.5型ワイ… 【ふるさと納税】液晶モニター31.5型ワイ… ¥135,000 【楽天1位受賞】 マウス ワイヤレスマウス… 【楽天1位受賞】 マウス ワイヤレスマウス… ¥1,380 【SALE】 ロジクール ワイヤレスマウス M2… 【SALE】 ロジクール ワイヤレスマウス M2… ¥1,420
Rakuten Web Service Center