SSブログ

Macでコンテナ仮想化をしたい。ができなさそう。 [MacOSX]

Docker for Macがコンテナ仮想化じゃなくて、ハイパーバイザー型の仮想化であることが判明して、DockerではmacOSのコンテナが立てられないんじゃないかと思っている。

https://miff.blog.ss-blog.jp/2020-01-21-2

macOSなのにmacOSのコンテナを使えないなんて酷すぎるんだけど、ちょっと見た感じではDocker for MacではLinuxのコンテナしかないように思えます。chrootから発展したコンテナ仮想化として考えると、Docker for Macはコンテナ仮想化では全くないと思われ。Docker=コンテナではないのです。LinuxがホストOSだったらそうなのかもしれないけど、多分WindowsとかのDockerも同様にハイパーバイザーなのでしょう。

いろいろ探したんだけど、これなんかはだいぶ違法というかグレーなことをしているのだろうし。
https://qiita.com/syu_chan_1005/items/084b3c0679c3b3940595
そういうことじゃないんだ。macOS上でmacOSのコンテナを動かしたいだけなんだ。なんでそんなこともできないんだろう。それとmacでコンテナと検索すると、APFSパーティションのことが出てきてしまい、コンテナ仮想化の話はほとんどない。


恐らくだけど、macはカーネルを差出したくなかったんじゃないかと思うんだよね。別にそれぐらい良いじゃないかと思うんだけど、わざわざHypervisor Frameworkなんて作るのはそういうことなんだろうと思う。分けるとはいえいろいろ共用される可能性があるので、変更のタイミングとかを気にしないといけないのは面倒くさいということなんだろう。

というか、Linuxなどを動かすという要望の方が多かったのかもね。新しいOSを入れることは他のメディアを入れればまだできるのだろうけど、それとは違うんだよなぁ。まぁそれでも良いけど、コンテナ仮想化ができればそれに越したことはない。macでデスクトップではない使い方をするコンテナではあまりニーズがないのかもしれない。




そういやコンテナ仮想化を知ったのは、Solarisで仮想化を使えないかという話で知ったのだった。最初はコンテナ?と思ったが、結局その頃流行り始めた仮想化の一つということで飲み込んだ。その時はあまり調べもしなかったんだけど、UNIX的な考え方をすれば、そういう方向性に行くよなと思ったりはした。

確かにchrootみたいに既存のディレクトリに制限をかけて、プロセスなども分離して、ポートなどを別に準備すればそれで良いわけだからね。ホスト型やハイパーバイザー型の仮想化に比べれば十分に負荷が小さい。だってカーネルは同じだからね。同じじゃないカーネルを動かすとかはできないけど、同じ環境を設定させるのであれば、全く同じフィジカルなハードウェアで動かせる方式は面倒がなくていい。

その頃も(Solaris10ができた頃)、高い機材を効率よく使うためにコンテナを使うことをクライアントから提案された。というか、クライアントの方がよく知ってんのかよというところだったが、仮想化も今ほど一般的になっていない時にやっていたんだから、IT業界ってのは新しい物好きというか、使える技術はものすごく使っていくというところはあると思う。

そもそもハイパーバイザーとかホストOSの仮想化だって、元々はVMwareとかでもエミュレーションみたいな用途から発展したみたいだったしね。それからCPUが仮想化をサポートするようになって、サーバではそれを使うのが普通になってきた。完全仮想化とか準仮想化とかあったけど、何がどうだったのか今でも正直よくわからない。今でもサーバレスがなんとかとやっているけど、結局何を使うかというところになるから、概念めいたところは仕事になっちゃうとあんまり関係なかったりする。


言いたいのはMacもUNIXを語るなら、コンテナ仮想化ぐらい実装しろってことですよね。まぁXServeとかかなりコケたプロダクトがあるくらいだから、クライアントOSとしては必要ないってことなのかな。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2020/02/03 [Twitter]


コメント(0)