Dockerで始めるモダンな開発環境構築入門

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の理解が土台となります。