こんにちはDocker for Mac
どういう記事なの
内容
Docker社から3/24にDocker for Mac及びDocker for Windowsの2つのベータ版が発表されました。
この発表について知識の確認も兼ねてざっと書こうと思います。
テクい話はあんまりありません。
対象読者
- Macユーザー
- dockerあんまりわかんないっていう人
いいわけ
- 記事執筆時点で私はまだDocker for Macを実際に触ったことがありません
- 申し込んだけど申込 = 順番待ちリストへの追加なので、その後順次使えるようになるみたいです
- まだdockerについての理解が浅いため、誤りがありましたら指摘してくださると嬉しいです
ざっくり基礎知識
Dockerとは
Dockerは仮想化技術の1つです。詳細についてはググってください。
もう2016年なのでいろいろ記事があります。
MacでDockerを扱うために必要なこと
Docker imageはLinux上でしかコンテナとして使うことができません。
Macで使うのは諦めてください……とはさすがになりません。
Macで使うときにはLinux層を仮想環境でつくって、その上でコンテナを載せています。
このLinux層を管理するために Docker Machine(docker-machine)
というツールがあります。
container1 | contaienr 2... -------------------------- Linux(docker-machine) -------------------------- OS X
docker-machineがあるおかげで「sshしたLinuxサーバの中でdockerコマンドを打つ」という面倒なことをせず、「OSXのターミナル上でdockerコマンドを打つ」ということができています。
Docker for Mac
Docker for Macとはなんなのか
Docker for MacはMacでDockerを扱う際に必要であったDocker Machineの諸課題を解決するためのものです。
docker-machine + Macでの課題
話はいったんもどりまして、先ほど紹介したdocker-machine + Macの組み合わせには実は以下のような課題がありました。
- docker-machineで使うのでVirtualBoxが必要
- containerを実行しているのはあくまでLinux側なのでOSX上のリソースに対する権限まわりでトラブルが起こりがち
- containerはLinuxとの接続はうまくできるがOSXまで接続してくれはしないので、LinuxVMのIPを調べるとかの作業が発生して面倒
どう解決したのか
上述の課題は全てVirtualBoxに起因するものです。
Docker for MacではVirtualBoxではなくxhyveをバックエンドに据えることでこれらの課題を解決しました。
xhyveを使うことでOSX上でVMが動くのではなく、OSXと並列でLinuxが動くようになるはずです(ここ理解あやしいんで間違ってたらすみません……)。そのためOSレベルでの連携が行えるようになり、利便性が向上しています。
図にするとこんな感じになるはずです。
| container1 | contaienr 2... ---------------------------------------- OS X | Linux(docker-machine) ----------------------------------------
公式のブログではDocker for Macの特徴としては以下のようなものをあげています。
- VirtualBoxが不要になりました
- コンテナへのボリュームのマウントがきちんと機能するようになりました
- ファイルの変更通知(inotify)も動きます
- ネイティブアプリケーションで自動アップデートするようになりました
- これには他のDockerツールも含みます
- DNSサーバを含んでおりLinux層に対して
docker.local
のようなホスト名でアクセスできるようになりました
docker-machineを操作するのめんどいなーと思っていたんですけどそういうところが解消されそうなのでDocker for Macにはかなーり期待しています。
3/26 12時28分 追記
@HKDnet Docker for MacとDocker Machineは今後も共存するのでは?DockerMachineにはクラウドドライバがあるため手元のマシン以外のDockerデーモンも扱えます。 https://t.co/zi2wCn7chB
— yamamoto (@yamamoto_febc) 2016年3月25日
twitterで指摘を頂いたので訂正します。
「さよならdocker-machine」っていうとDocker for MacがDocker Machineの完全な代替であるかのように見えますがそうではありません。
私はDocker MachineのバックエンドはVirtualBoxのみにして使っていますが、実はDigitalOceanなどを利用することができます。
その場合は新しくインスタンスを作ってくれるんですね。これは普段使ってないので完全に忘れてました。
そしてこれは知らなかったんですけど、プラグインでバックエンドは拡張できるみたいです。
ConoHaやさくらインターネットのもあるとのこと。
ご指摘いただいた @yamamoto_febc さんのさくらインターネットでの例を紹介して頂いたので掲載します。