1.初めに
いつぞややったやさしいk8sのdocker版です
- 今回はdockerの必要性
- dockerを使うメリット
- 仕組み
という観点で話を進めます
1. なぜDockerが必要なの?(「自分のPCでは動いたのに」問題)
プログラミングをしていると、よくこんなトラブルが起きます。
- 「自分のPCでは動くのに、友達のPCだとエラーが出る」
- 「古いプロジェクトを動かそうとしたら、設定が変わりすぎていて動かない」
これは、PCごとにインストールされているソフトウェア(Pythonのバージョンやデータベースの種類など)が微妙に違うことが原因です。
Dockerはこの問題を「箱ごと渡す」ことで解決しました。
2. Dockerの仕組み:コンテナとイメージ
Dockerを理解するための2大キーワードが、「イメージ」と「コンテナ」です。
① Dockerイメージ(秘伝のレシピ)
アプリケーションを動かすために必要な「材料」と「手順」がすべて詰まった設計図のようなものです。
- OSの種類
- プログラミング言語のバージョン
- 必要なライブラリや設定ファイル
② Dockerコンテナ(完成した料理)
イメージというレシピをもとに、実際に作り出された実行環境(箱)のことです。この箱の中は外部から隔離されているので、他のソフトに邪魔されることなく、常に同じ状態でアプリが動きます。
3. 従来の「仮想マシン」との違い
昔から「仮想マシン(Virtual Machine)」という似た技術はありましたが、Dockerは圧倒的に軽くて速いのが特徴です。
| 特徴 | 従来の仮想マシン (VM) | Dockerコンテナ |
|---|---|---|
| 重さ | PCの中に別のPCを丸ごと作る(重い) | 必要なソフトだけを包む(軽い) |
| 起動速度 | 数分かかることもある | 数秒で立ち上がる |
| 効率 | PCのメモリをたくさん食う | 最小限のメモリで済む |
4. Dockerを使うメリット
-
環境構築が数秒で終わる:
誰かが作った「イメージ」をダウンロードして実行するだけで、複雑な設定なしにデータベースやサーバーが立ち上がります。 -
PCが汚れない:
箱(コンテナ)の中で作業するので、不要になったら箱を消すだけ。自分のPCのシステム設定を書き換える必要がありません。 -
本番環境への移行が楽:
自分のPCで作った「コンテナ」をそのままクラウドサーバーに持っていけば、全く同じように動きます。
まとめ:Dockerは「引越し」に例えるとわかりやすい
dockerの良さは再現度が安定している点であることが分かったかと思います。
これにk8sを組み合わせるとまたいろいろできるので試してみると面白いかなと思います。
よいインフラライフを!