インフラ中級
Docker
どっかー
一言で言うと
アプリケーションとその動作環境をまるごとパッケージ化する技術。「どの環境でも同じように動く」を実現する。
もう少し詳しく
一言で言うと
アプリケーションとその動作環境をまるごとパッケージ化する技術。「どの環境でも同じように動く」を実現する。
もう少し詳しく
Dockerは、アプリケーションを「コンテナ」という単位でパッケージ化する技術です。引っ越しに例えると、家具を1つずつ運ぶのではなく、部屋ごとコンテナに入れて運ぶようなものです。新居(別のサーバー)でコンテナを開ければ、まったく同じ部屋が再現されます。
「自分のPCでは動くのに、本番サーバーでは動かない」という問題は開発現場でよく起きます。OSの違い、ライブラリのバージョン違い、設定の違いなどが原因です。Dockerを使えば、アプリとその動作に必要なものをすべてコンテナに含めるため、どの環境でも同じように動きます。
現在のソフトウェア開発では、Dockerはほぼ標準的な技術になっています。
実務でどう使うか
コードで見てみよう
# Dockerfile: アプリの「レシピ」
FROM node:20 # Node.js 20を使う
WORKDIR /app # 作業フォルダを設定
COPY package.json . # 依存関係の定義をコピー
RUN npm install # ライブラリをインストール
COPY . . # アプリのコードをコピー
CMD ["npm", "start"] # アプリを起動# コマンド1つで環境構築&起動
# docker build -t my-app .
# docker run my-app
# → 誰がどのPCで実行しても、同じ結果になる!