Help us understand the problem. What is going on with this article?

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

More than 3 years have 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/

kmagai
最近は主にiOSやってます
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away