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)
- Docker公式サイトからインストーラーをダウンロード
- ダウンロードしたファイルを実行してインストール
- 再起動後、ターミナルまたは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 ls
とdocker network inspect
で確認
8. まとめ
Dockerは、環境構築の手間を削減し、開発効率を大幅に向上させるツールです。初心者でも基本コマンドと構成ファイルの書き方を理解すれば、すぐにプロジェクトに活用できます。この記事をきっかけに、ぜひ実際に手を動かしてDockerの便利さを体感してみてください。