Docker

カリキュラムで出てきたので勉強しようと思いました。

Dockerって何??

データやプログラムを隔離できる

正直え??
って感じでした。

パソコンやサーバーでは複数のプログラムが動いており、wordとかエクセルとか...
同じようにサーバーではApachとかMysqlとか複数のプログラムが同時に動いており、それらのデータを独立した環境に隔離して動かすのがDockerの役目

コンテナ

dockerのイメージとしてパソコンやサーバー上の環境を部屋みやいな感じて分けて、この各部屋にプログラムが入っている。でこの部屋のことをコンテナと言うDocker Engineの上にコンテナを容量の許す限り載せることができる。

イメージ

コンテナを操作するにはDocker Engineを使うがそのときイメージと呼ばれるコンテナの素になるものから作成する。

クラスがイメージで
インスタンスがコンテナみたいな???

DockerにはLinux osが必要になる。 何かしらLinuxが要る。

てかそもそもなんで隔離が必要??

多くのプログラムは単独で動いてるのではなく、何しかしらの実行環境やライブラリー他のプログラムを利用している。

一つのプログラムをアプデしたとき他のプログラムに影響を与えてしまう。

例えばシステムAとシステムBが存在する。
これらのシステムAとBはとあるライブラリーを共有して使っている。

ライブラリーをアプデしてver.5になった場合
システムAはver.4じゃないと動かない。
システムBはver.5じゃないと動かない。

これだとシステムAが動かずに困ってしまう。
これはソフトウェアを使ってる話だが、実行環境やライブラリーやファイルも同じことが言える。
共有しているものを一方の都合で変更すると、他のプログラムに不具合が出る。

システムAとBの同じディレクトリを使う設定になり、バージョンの書き換え合戦になることもある。
なので
システムAはver.4のコンテナを用意
システムBはver.5のコンテナを用意
してあげてお互いが干渉しないようにする必要がある。

他に便利なことは...

  • 通常一つのサーバーマシンには一つのwebサーバーしか載せれないが、コンテナ技術を使えば複数のwebサーバーを運用することができる。

  • コンテナは持ち運びできる。開発環境を整えることができるので、同じチューニングしたコンテナを他の人に配ることもでOSが違う場合でも、dockerさえあれば物理的な環境の違いや、サーバー構成の違いを無視することができる。

実際に手を動かしていきます。