コンテナは持ち運べる
実際には持ち運ぶ頭位よりは一度作成したコンテナの情報を書き出して、別のDocker上に再構築するということになるが、DockerからDockerにコンテナを移すことができるという認識で良い。
つまり、同じ状態にしたコンテナをメンバー全員に配布し、開発環境を一斉に同一の状態で用意することができる。
また、開発サーバで作成したものをそのまま本番サーバに持っていくこともできる。
Dockerさえ入っていれば異なるOS間であってもそれを意識することなくコンテナを移動することが可能である。
実際の案件上だと開発サーバと本番サーバの間で若干の環境差異があり、うまく行かない部分があるという話はよくあることだが、Dockerがあれば物理的な差異やサーバ構成の差異など無視することができるので、その様な面倒ごとを一気に解決することができる。
Dockerの仕組みについて
Dockerの仕組みについてをもう少し詳細にみてみると、
物理的なサーバの上に、サーバOS、Docker Engine、コンテナの様に積み上がっている構成になっている。実際にはもう少し複雑だが、大方この認識で問題ない。
まず物理サーバの上にはサーバOS (LinuxOS)が存在する。
(※Dockerを使用するためにはLinuxOSが存在することが前提となる。)
普通のサーバであればOS上に直接プログラムやデータを載せるが、Dockerを使用する際にはOSの上にDocker Engineを載せて、その上でコンテナを動かす。
プログラムやデータはコンテナの中に入れる。
コンテナの中にはプログラムやデータを入れると何度も表現しているが、そのコンテナの中には最初から『LinuxOSっぽいもの』が入っている。
真に空のコンテナを作成することも可能ではあるが、ほぼほぼ使用することは無いので特段ここでは覚えておかなくても良い。
では『っぽいもの』とはどういうことなのか。
これは、あくまで『OSっぽいもの』であって、完全なOSではないのでこの様な表現になる。
4日目の感想
内容がDockerの仕組みの中身に迫ってきたが、『OSっぽいもの』という表現がおもしろいと思った。
確かに学んだ中でも制約として「コンテナに入れるプログラムはLinux用の物でなければならない」というものがあったので、コンテナ内ではLinuxベースでプログラムを動かす何らかの仕組みがあるのだろうとは思っていた。おそらくその仕組みがOSっぽいものなのだろう。
仕組みを理解するにはまず構成がどの様になっているのかという骨組みの部分の理解が必要であり、それを順番に学習することができるこの本はやはり選んで良かったと思う。
読み進めるのも楽しくなってきた。