使ってるツールがどうやって動いているのかの基本知識くらいはつけたいなと思って調べてみた。
リポジトリ
GitHub - docker/for-mac: Docker for Mac
ただし、管理されているのはissueのみ。ソースコードは公開されていない。
About Docker -> Acknowledgment をクリックすると、利用されているOSSライブラリのライセンス条項が全部みれる。ちなみにすごい長いテキストファイルです。
仕組み
macOS -> hyperkit -> LinuxKit -> containerd -> [ container ]
こんなレイヤー構造になっている。
hyperkit
※mobyプロジェクト
xhyve を元にして作られている。Hypervisor.framework を利用してapplicationからhypervisorを利用するためのツール。よく分からん。
LinuxKit
※mobyプロジェクト
xhyve上に構築するコンテナ実行用の最低限のLinux OSということらしい。結局の所、hypervisor型でミニマムなLinuxを立ち上げて、そこでDocker Daemonを動かしているということなのだろうか?
Containerd
https://containerd.io/ を参照
OCI (Open Container Initiativ)準拠のコンテナ実行Runtime。
まとめ
macOSネイティブでcontainerdを実行していない or 出来ない? ため、xhyve上で LinuxKit経由でcontainerdを実行している。
疑問なのは、macOS上で立ち上げたdockerの環境が、どれくらいLinux上で立ち上げたdockerと違うのかというところ。
containerdとかLinuxKit周りをもう少し調べてみよう。