「自分のPCでは動くのに本番では動かない」——この定番トラブルを解決するのが Docker です。環境ごとパッケージ化して持ち運べるコンテナ技術の基礎を、専門用語をかみ砕いて解説します。
Docker は、アプリケーションと必要な環境(OSライブラリ、ミドルウェア、設定)を「コンテナ」という単位でまとめ、どこでも同じように動かせるようにする技術です。仮想マシンより軽量で起動が速く、開発から本番まで環境差をなくせるのが最大の利点です。
コンテナの「設計図」。アプリと環境一式をまとめた読み取り専用のテンプレートです。
イメージを元に起動した実体。1つのイメージから複数のコンテナを立ち上げられます。
イメージの作り方を記述したテキストファイル。手順をコード化するので、誰が実行しても同じ環境が再現できます。
Docker をインストールしたら、動作確認は次の1行で完了します。
docker run hello-world
これは hello-world イメージを自動ダウンロードし、コンテナとして実行して挨拶を表示するだけの最小サンプルです。
docker images # 手元のイメージ一覧
docker ps # 起動中のコンテナ一覧
docker ps -a # 停止中も含めた一覧
docker run -d nginx # バックグラウンドで起動
docker stop <ID> # コンテナを停止
docker rm <ID> # コンテナを削除
Node.js アプリを動かす最小構成の例です。
FROM node:20
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "index.js"]
このファイルを元に docker build -t myapp . でイメージを作り、docker run myapp で実行します。
Webサーバーとデータベースなど、複数のコンテナを連携させる場合は docker-compose.yml にまとめて docker compose up の一発で立ち上げられます。マイクロサービス開発で威力を発揮します。
Docker を使えば「環境構築で半日つぶれる」問題から解放され、チーム全員が同じ環境で開発できます。まずは hello-world と簡単な Dockerfile から始めて、コンテナの感覚をつかんでみましょう。