はじめに
これまでDockerを何となく使っていましたが、もう一回1から勉強してみようと思って、参考書を読んでみたら、お!と思うことがあったので書き残しておきました。
これまでのDockerへのイメージ
Docker Desktopをインストールすると、Macのターミナルからdocker
コマンドを使えるようになって、コンテナを起動したり、コンテナ内に入ったりすることができます。
Docker Desktop自体は、本来GUIでいろいろ操作するためのソフトですが、インストールしてからGUIの方はほとんど触れたことがなく、コマンドでできるならそれでいいかな〜という感じでCUI操作がメインです。
ターミナルにコマンドを打てばコンテナ関連のことがいじれるので、ターミナルが直接Dockerというものを動かしていると思っていました。
多分これが間違っているというわけではないと思います。
Docker Desktop
Docker Desktopをインストールすると、
こんな感じのいろいろが入ってくるとのことでした。
Linux仮想マシン?
いろいろインストールされるのはわかりましたが、その中にLinux仮想マシンがあるということの意味がわかりませんでした。どうして、何のために必要なのか理解できません。
DockerはLinuxベースのコンテナを扱いますが、どうやらLinuxコンテナをサポートするためにLinuxカーネルが必要となるということです。そのためのLinux仮想環境ということですね。Linuxのコンピュータであれば仮想環境は不要です。
ここら辺で、自分が何を勘違いしていて、何がわからなかったのかが解けました。
MacではターミナルでLinuxコマンドを打てるので、勝手に「Mac≒Linux」と思い込んでました。Linuxぽい操作ができるだけで、全然別物ですよね。
だから、Dockerを使いたければ、Linux環境が必要であり、MacやWindowsユーザーには仮想環境を提供している、と。で、LinuxのPCならそれは不要、と。
MacならHyperKit、WindowsならWSL2といった仮想化技術が利用されるということです。
理解した後のDockerへのイメージ
ターミナルでDockerコマンドを打つと、CLIクライアントがそのコマンドを解釈します。Docker自体はLinux仮想マシン上で起動し、その上でコンテナをいじっているということですね。
ただし、実際にはユーザーがLinux仮想環境を意識することは不要です。裏側で透明な状態で仮想環境が動いているだけです。
終わりに
どんなソフト(アプリ)もインストールすれば動きます。でもどうやって動いているかを知ると、また違った学びが得られるので面白いですね!