SSブログ

Docker for MacでなんでUbuntuが動くのか? [MacOSX]

以前にDocker for Macを入れた際に、Ubuntuが動くのはなぜかと疑問に思っていました。chrootの発展形がコンテナ仮想化とするなら、Macのコンテナ上でLinuxが動くのは妙な話なんじゃないかと。

https://qiita.com/kirikunix/items/33414240b4cacee362da

ここではLinux同士を使っている場合に、ABIという仕組みがあるからある程度は大丈夫なんだよ、という説明でした。しかし、それではMacの説明がつかない。


下のコメント欄にその言及がありました。

https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment HyperKit という仮想化ツールでdockerホストとなるVMを作り、 そいつと /var/run/docker.sock を通してやり取りをする、という仕組みのようです。 macOSにABIを被せているわけではなく、Linuxを別個に立てているのですね


これだったらコンテナ仮想化じゃなくて、ハイパーバイザー型と大して違わないやん。ただchroot的なディレクトリの利用はしているかもしれないけど。でも、Mac上のUbuntuは60GBの大きさしかなかった気がするなぁ。Dockerはコンテナ仮想化という認識は変えないといけないかもしれない。


ここを直接読む。
https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment
うわ。最初の最初にすごいこと書いてあったw。

It also installs VirtualBox.


VirtualBox入っとるやんw。というかDockerを上にかぶせる意味あるん?
あ~Docker Toolboxの方なのか。Docker Desktopの前にあったやつみたい。

Docker Desktop uses HyperKit instead of Virtual Box. Hyperkit is a lightweight macOS virtualization solution built on top of Hypervisor.framework in macOS 10.10 Yosemite and higher.


やっぱハイパーバイザー使っとるわ。他のDockerはコンテナ仮想化かもしれないけど、for Macは純粋なコンテナ仮想化じゃないな。はじめはVirtualBoxを使う気になっていたけれど、DockerがHypervisorであれば使う意味があまりないんじゃないかと思ってきた。というか、macのコンテナを作ろうとしていたから、Linuxを入れるのを前提にしているんじゃどっち使ってもあんまり変わんないかもな。というか、慣れているVirtualBoxの方がいいのかも。

というかMacで開発しようと思ったら、コンテナを使えないとしたら既存の環境を汚すしかないのかとちょっと落胆。それが嫌だからコンテナを使おうと思っていたのに、Dockerのバカぁ。って、DockerでMacのコンテナ使えるかどうか調べてないですが…。

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

やっとmacOS Catalinaにした。 [MacOSX]

macOS 10.15.2になってからmacOSをアップデートしました。二回もマイナーアップデートしたんだから、あらかた問題は解決されているはず。というか、ずっと前の状態を保つ意味もあまりないので、TimeMachineでバックアップを取って入れてみました。

始めに15分で終わると出ていたんだけど、最終的に終わったのがちょうど一時間後くらいでした。ダウンロードにも時間がかかっているので、一時間強というところでしょうか。結構時間がかかる。最近のアップデートはSSDを使っているので、割と時間がかからなかった印象がありますが、やっぱりOSのアップグレードはそこそこ時間がかかる。まぁ使っているソフトウェアの環境ってのは人によって違いますしね。

LinuxだとかだとOSをクリーンインストールして入れ直しちゃうところですよね。コンテナとかの仮想化でもOSの構築を自動化でやっている場合も多いみたいだし。だけどクライアントOSはそういうわけにはいかないよね。色々データがシステムの中に散らばっちゃってるし。




それとは別に今、ちょっとDocker for Macを入れようかどうか気にしている。VirtualBoxでUbuntuを入れようかとも思ったんだけど、せっかくMacを使っているのだから、そのまま使った方がパフォーマンスも下がらないだろうなと。というか、わりとコンテナじゃない仮想化ってHDDの書き込みにパワーを使ったりしてますしね。それとHDDの容量を最初から規定しないといけないことも多いし。

そういう意味からしてコンテナ仮想化は他人丼的な使い方をしなければ、仮想化としてお手軽かと思うね。ハイパーバイザー型の仮想化も悪いとは思わないけど、完全に本番動作を仮定していない限りは別にmacOSでいいじゃないかと思う。曲がりなりにもUNIXなんだしね。

https://docs.docker.com/docker-for-mac/install/

Docker Desktopって書いてあるけど、Desktopって書いてあるのが気になる。特にGUIは必要ないんだけどなぁ。どうせコンテナの操作はCUIでやるんだし、そこいらの操作はVirtualBoxっぽくGUIでいいと思うんだけど、見た感じそうはなっていない。まぁ仮想環境のセッティングがホストOSに依存する部分が大きいので、そこまで設定に苦労しないからかもしれないけど、GUIはGUIでCUIはCUIで分けたい気もする。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/


ん?ubuntuとか書いてあるけど、macOSでubuntuのコンテナを動かすってどういうことだ?
ただ単にどのOSでもみんな同じこと書かれてんのかな? そもそもhello-worldってのは環境ってことなのかな?

とりあえず、docker run -it ubuntu bash やってみよ。
uname -a で見たら
# uname -a
Linux b24ee05811f8 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux


macじゃなくLinuxが走っていることはわかる。Ununtuかどうかはわからんけど…。というか、コンテナ仮想化はこういうことできるの? なんかコンテナというプロダクトとしての趣向が違わない? コンテナ仮想化がchrootの発展系として考えるなら、違うOSのコンテナなんて使えないはずなんだけど…。

なんか色々気になるけど、Ubuntuが動くということはわかったわ。にしてもコンテナっていつもrootで始めに入るんだけど、普通のLiunxを使うものとしては気持ち悪すぎる。結局、普通のユーザー作るんやろし。まぁそのうち細かくやっていこうと思います。とりあえずはここまで。




Catalinaを入れてまず気づいたのが、Dockに何か無理矢理入れられている。PodcastとAppleTVが割り込んでいる。どっちも使わなそうだけど一応見てみよう。PodcastとかiTunesとかに入れられていて懐かしいけど、しばらく使っていなかったな。ただコンテンツが貧弱すぎて聞く気にならない。Youtube見てた方がいいなという話になっちゃいそうだな。

TVってアプリケーションは、映画とかの映像をレンタルか買い切りで見ることができるようだ。他の入ったら見放題のサービスよりも割高感はある。正直、これに飛びつく人はあまりいないだろう。とりあえず、TVもPodcastもDockから除いた。いらん、こんなもん。


iPadもあるのでSidecarができそうだけど、あんまり好評とは言えないみたいだしなぁ。後でやるけど、今はまだいいや。Catalina唯一の新機能と言われていたが、本当に他に何かないのかなぁ。

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

Twitterまとめ投稿 2020/01/21 [Twitter]


コメント(0)