Docker 作为一个集成的、易于部署的环境,在很多方面都有广泛的应用,但是由于其使用了 Linux 内核的容器技术,所以很依赖 Linux 环境,在其他系统环境下必须要使用虚拟机启动一个 Linux 系统然后在此基础上使用 Docker,非常不方便。而前不久 Docker 推出了 Mac 和 Windows 的全新 beta 版本,允许 Docker 以更贴近用户、透明的方式运行。笔者也下载了 beta 版本尝鲜,最新版本是 1.11.1-beta10
,这里只讲解 Mac 平台。
Docker for Mac vs Docker Toolbox
Docker for Mac 本质上还是创建了一个 Linux 虚拟机,然后在上面运行 Docker Daemon,Mac 本身存在 Docker 二进制文件作为客户端,但是设计上相比之前的 Docker Toolbox 就更加巧妙了。
Docker Toolbox
Docker 工具箱会将 docker
、docker-compose
、docker-machine
安装到 /usr/local/bin
目录下,同时安装 VirtualBox。工具箱通过 docker-machine
虚拟化一个 Linux 环境,这个环境运行 boot2docker 系统,其中包含了一个 Docker Engine 并且使用主机 $HOME/.docker/machine/machines/default
上存放的证书通信。
在使用 docker
、docker-compose
命令之前,必须要使用 eval $(docker-machine env default)
命令初始化各类环境变量用于告知 docker
命令如何与虚拟机内的 Docker Daemon 通信
Docker for Mac
Docker for Mac 是一个原生的苹果应用程序,被安装到 /Application
目录。安装时会创建 /usr/local/bin
目录下的 docker
、docker-compose
、docker-machine
符号链接,这些符号链接指向 ~/Library/Group Containers/group.com.docker/bin
目录下的各类文件,而 ~/Library/Group Containers/group.com.docker/bin
的文件实际上也是符号链接,他们指向 /Applications/Docker.app/Contents/Resources/bin
目录下的实际二进制文件。
Docker for Mac 使用通过 Hypervisor.framework 提供的轻量级的 xhyve 虚拟化技术
Docker for Mac 不使用
docker-machine
管理虚拟机Docker for Mac 不通过 TCP 端口通信,反而使用
/var/tmp/docker.sock
套接字文件通信(实际上是将/var/tmp
目录挂载到了虚拟机中,虚拟机在其中生成套接字文件)由于使用了 xhyve 虚拟机,所以可以模拟不同架构的处理器,这样开发者就直接能在 Mac 上使用 Docker 使用诸多平台的镜像文件,比如 arm 等。
为了能主机虚拟机共享文件,Docker 使用 osxfs 作为全新的文件共享方案,在很多方面都有全新的特性,比如在文件权限、命名空间、文件所有者、文件系统事件、挂载点、符号链接、文件类型、扩展属性等方面都有了全新的内容,并且,所有产生的日志都能通过 syslog 查询,非常方便。不过现在依旧存在许多问题,比如没有设置 docker daemon 各项参数的接口。如果需要设置 registry-mirror 则必须手动使用 pinata set daemon
命令设置 daemon.json 内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。