Dockerで始めるモダンな開発環境構築入門
Linuxの基礎からコンテナ技術へ
LinuxへのApache・PHP・MySQLのインストール、SSHによるサーバー接続、ファイルパーミッションの管理といった基礎を習得したエンジニアにとって、自然な次のステップがコンテナ技術の導入です。特にDockerは、現代のWebアプリケーション開発において事実上の標準的なツールとなっており、LPICなどの資格学習や業務の自動化でも頻繁に登場します。
Dockerの詳細な仕様とリファレンスはDocker公式ドキュメントに網羅されており、インストール手順からComposeの設定例まで確認できます。
Dockerが解決する環境問題
WebサーバーやDBサーバーをLinuxマシンに直接インストールしていく手法は学習目的には有効ですが、複数プロジェクトをまたいで作業したり、チームで開発環境を共有したりする場面では課題が出てきます。PHPのバージョン差異、必要なライブラリの有無、OS依存の挙動の違いなどが、「自分の環境では動くが他の環境では動かない」という問題を引き起こします。
Dockerはアプリケーションをコンテナと呼ぶ隔離された実行環境で動かすことで、この問題を根本から解決します。ホストOSのLinux環境を汚さずに済み、不要になったコンテナは削除するだけです。Linuxのカーネル機能(namespaceによるプロセス分離、cgroupsによるリソース制御)を利用しているため、仮想マシンに比べてオーバーヘッドが小さく、起動が高速という特徴もあります。
docker-composeでNginxを動かす
実際に試してみましょう。プロジェクト用のディレクトリに docker-compose.yml という設定ファイルを1つ置くだけで、NginxのWebサーバーを起動できます。
# docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
同じディレクトリに html フォルダを作り、その中に index.html を置いたら、ターミナルで docker compose up -d を実行します(Docker Compose V2からはハイフンなしの docker compose が推奨されています)。
ブラウザで http://localhost:8080 にアクセスすると、自分で置いた index.html が表示されます。Linuxマシンに直接Nginxをインストールして設定ファイルを編集する手間がなく、この docker-compose.yml ファイルをチームで共有するだけで、誰もが全く同じ環境を即座に再現できます。
Linuxの知識がDockerを深く理解させる
Dockerの操作は比較的シンプルですが、その仕組みをより深く理解するにはLinuxの基礎知識が役立ちます。ネットワーク設定(bridgeネットワーク、ポートフォワーディング)、ファイルシステムのマウント、プロセス管理の概念はそのままDockerの設定項目に対応しています。
さらに学習を進めるなら、Docker Compose公式ドキュメントでマルチコンテナ構成(WebサーバーとDBを組み合わせるなど)の実践例を参照してください。コンテナオーケストレーションツールであるKubernetesへの移行もDockerの理解が土台となります。