導入
Docker は、アプリケーションと、それを動かすのに必要な部品(プログラム本体・ライブラリ・設定・OSの一部)を 1つの箱にまとめて持ち運べる ようにする仕組みです。この箱を コンテナ(container) と呼びます。
説明
プログラムを他の人のPCや本番サーバーで動かそうとすると、こんな問題がよく起きます。
- 「自分のPCには入っているライブラリが、相手の環境には無い」
- 「Node.js のバージョンが違って動かない」
- 「OSが違うので設定の場所が違う」
これらはすべて「環境の違い」が原因です。Docker は、アプリを動かすのに必要なものを丸ごとコンテナに詰めてしまうことで、この違いを消します。コンテナは、Docker が入っている環境ならどこでも まったく同じように 動きます。
flowchart LR A[アプリ本体] --> Box[コンテナ] B[ライブラリ] --> Box C[設定ファイル] --> Box D[OSの一部] --> Box Box -->|どこでも同じ| PC[開発PC] Box -->|同じイメージ| Srv[本番サーバー]
「仮想マシン(VM)と何が違うの?」とよく聞かれます。VM はOS丸ごとを仮想化するので重くて起動も遅いですが、コンテナはホストのOSカーネルを共有し、アプリに必要な部分だけを包むので 軽くて速い(数秒で起動する)のが大きな違いです。
やってみよう
まずは「Docker = アプリを箱(コンテナ)に詰めて、どこでも同じように動かす道具」というイメージを持てればOKです。次のレッスンで、その箱の設計図にあたる「イメージ」との関係を見ていきます。