Dockerってなんやねん

dockerってなに Docker
dockerってなに

Docker、今では当たり前の技術で、エンジニアであれば普通に使っていると思います。

もちろん私も使ってきたのですが、
「なんとなく」という雰囲気で使ってきたんです。

それでも特に困ったことはなかったのですが、基礎をしっかり固めたい!という思いで、
Dockerについてもちゃんと勉強することにしました。

「今までDockerを使ってきたけど、ちゃんと理解してないなー」というエンジニアの方には、
結構わかりやすく書けてると思います!

最近「基礎固め」のために記事を書いているので、
「エンジニアをしてるけど、基礎が弱いかも…」と思っている方には役に立つ記事が多いと思います。

せっかくですし、役に立ったらいいと思うので、参考にしてみてくださいねー!

Dockerの仕組み

Linuxがないと動かない

まず、Dockerというのは、Linuxがないと動きません。
Linuxありきのものなのです。

意識したことはないかもしれません、私は意識していませんでした。
(それだけ便利なものだということか)

Linux OSが積まれたマシーンに、Dockerを入れることで、Dockerはちゃんと動く。
Dockerがちゃんと動くから、Docker上にコンテナを作成していけるというわけ。


イメージはこんな感じ。

コンテナの中にもLinuxの一部が入っている

なんなら、コンテナの中にも、実はLinuxの一部が入っています。

コンテナを作ったばかりで空っぽだと思っていても、実は勝手にLinuxの一部が入れられています

そうでないと、そのコンテナを動かせないからです。

どういうことかというと…

LinuxつまりOSの役割として、プログラムの内容をハードウェアに伝えることがあります。

通常は、プログラム → OSのカーネル周辺 → OSのカーネル → ハードウェア の順番で、
「次はこれしてー」と指示が伝えられます。

コンテナというのは、独立した環境で、それぞれのコンテナ内にプログラムが入っているので、
それぞれのコンテナ内に、OSを入れておけば、指示をハードウェアに伝えることができます。


ただ、OSの核を成すカーネルは、核が故に結構重たいものなので、
コンテナごとにカーネルを置いておくと、かなり重たくなってしまい、1つのPCで複数のコンテナを立てるなんて、とてもじゃないですが厳しいのです。

そこで、OSのうち、カーネル周辺の部分だけコンテナに置いておき、
プログラム → コンテナ内のカーネル周辺 → カーネル → ハードウェア という順番で、指示を伝え、
かつ、軽量化を実現しているというわけです。

文章が長くなってしまいました。
イメージはこんな感じ。

WindowsやMacでなぜ動くのか

いやいや、私のPCはMacだけど、開発にDockerを使ってるよ。

そもそもMacだからOSはMac OSだし、Linuxなんて入れた覚えないよ。

おっしゃる通りでございます。

DockerはLinuxが必要なのはわかったけど、
エンジニアが開発で使っているWindowsやMacで、なぜDockerが動かせるのか。

…環境構築の中で、Desktop for Mac、Desktop for Windowsを、PCにインストールしませんでしたか??

それです!
そのおかげです!

Desktop for Macをインストールすることで、
Dockerを動かすのに必要なLinuxのパッケージを、Macに無理やり入れているのです。

そうすることで、MacにLinuxが一部入り、そのLinuxを使って、Dockerを動かしているのです。

終わりに

思ったより記事が長くなってしまいました。

「コンテナとは何か」というような続編を別記事でだしますー。

こういう基礎がから理解することで、環境構築で何しているのかもちゃんと理解していきたいですね。

そうしたら、環境構築で詰まっても、自分で解消しやすくなると思います。

環境構築で詰まって時間を消費して困る自分にさよならしましょ!

タイトルとURLをコピーしました