開発環境とインフラ基礎(Linux・Docker) / 約20分
なぜコンテナか:VMとの違い、イメージとコンテナ
なぜこれを学ぶか
「私の環境では動くのに本番では動かない」を終わらせたのがDockerです。
コンテナはアプリケーションと実行環境をまとめてパッケージ化する技術です。VM(仮想マシン)がOSごと仮想化するのに対し、コンテナはホストOSのカーネルを共有するため軽量に動作します。
イメージは設計図(読み取り専用)、コンテナはそのイメージから起動された実行中のインスタンスです。同じイメージから何個でも同じ環境のコンテナを作れます。
Docker Hub等のレジストリから既存イメージをdocker pullで取得できます。自作のイメージはDockerfileというテキストファイルからdocker buildで作成します。
環境構築を「手順書(人が読んで再現する)」ではなく「実行可能なコード(誰が実行しても同じ結果になる)」として共有できることが、DX上の本質的な価値です。
重要ポイント
- VMとの違い=ホストOSカーネル共有で軽量
- イメージ=設計図、コンテナ=実行中インスタンス
- 環境構築を「コード」として共有できることがDXの本質
コードレビュー演習
新メンバーから「READMEの手順通りに進めてもNode.jsのバージョンが違ってエラーが出る」と相談されました。そこで以下のような`Dockerfile`を用意することにしました。この場合、バージョン不一致の問題はどうなるでしょうか?
FROM node:20-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]このDockerfileを使うことで、Node.jsのバージョン不一致問題はどうなるか?
ヒントを見る
`FROM node:20-alpine`はベースイメージにNode.js 20系を固定しています。誰が`docker build`しても同じイメージから始まります。
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?