Edited at

結局Docker for MacはDocker Toolboxと比べてどこが良いのか

More than 1 year has passed since last update.


tl;dr


  • VirtualBox捨ててDocker用に仮想環境を提供する

  • デフォルトでその仮想環境を使って開発することを想定としたdockerコマンドを提供する


Docker for Mac以前 (Docker Toolbox)



  • ローカル上でDockerホストを動かす方法


    • Docker toolboxでDocker Machineをインストールし、VirtualBox上にdefaultというdockerホストをプロビジョニングしていた

    • 実際にその仮想環境にアクセスするためには$(docker-machine env default)というコマンドで、どの環境に対してdockerコマンドを実行するか、指定する仕組みになっていた




  • 問題点



    • VirtualBox上でinotifyがうまく動かないバグがある


      • ファイルの変更を検知してくれない

      • e.g. nodemonでアプリを動かしている時にファイルに変更があっても再起動してくれない




    • VirtualBox上だろうがどこだろうがどうせ直接触れないのでもっと抽象化して欲しい


      • どうせDockerホストはdefaultな場合が多いのにいちいち指定するのめんどくない?






Docker for Mac以後



  • ローカル上でDockerホストを動かす方法


    • DockerホストはデフォルトでMac上の仮想環境(HyperKit)にプロビジョニングされる


    • /var/tmp/docker.sockにHyperKitのdockerホストを指定する


      • dockerにenvが指定されていない場合はデフォルトで/var/tmp/docker.sockを見るようになってる

      • 結果としてdockerコマンドはHyperKitで作られた環境をデフォルトで見るようになる






  • 解決したこと



    • ファイルの変更はinotifyで検知される


      • VirtualBoxではないので



    • VirtualBoxを直接管理すること無くDocker for Macがよしなにしてくれる


    • docker-machine経由ではなくデフォルトで直接ローカルのdockerホストを操作することができる





参考

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