因为本人MacOS版本不再受Docker Desktop官方支持,所以本人使用的Docker Toolbox,这里简单总结下对Docker Toolbox的理解。
当Docker Toolbox安装完成后,你会发现你的应用列表里多了两个应用图标

这时,我们只需要单机第二个Terminal这个蓝色图标运行,随后会打开一个默认终端的窗口,开始docker服务的启动,启动完成后,则可以在该终端窗口内使用docker操作了。你可能注意到了,在此窗口之外的地方是无法正常使用docker的,比如新开启一个iterm窗口。。
下面从原理角度理解此过程
VirtualBox是一个可视化的Mac虚拟机管理软件。而Docker本身提供了docker-machine
这样一个工具,该工具可以管理所有Docker服务主机。而Docker Toolbox就是将二者结合起来。
主要逻辑在/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh
这个脚本中,通过docker-machine create -d virtualbox default
这样一个命令,可以指定virtualbox为驱动类型,创建一个Docker服务Linux虚拟机

默认虚拟机名为“default”。创建完成后,启动该虚拟主机

启动完成后

这时,在这个终端窗口就可以正常操作docker了。
我们打开VirtualBox,可以看到这样的内容

这个就正是上面创建启动的Docker虚拟机!!(通过docker-machine ls
也可以验证)而上面的终端窗口,其实就相当于此虚拟机的一个终端而已。
你可以紧接着在上图VirtualBox界面点击“显示”按钮,它会为你打开一个该虚拟机的终端窗口

在该窗口中你也可以操作docker。而如果你直接新开启一个iterm终端窗口或者其他终端,如idea直接打开terminal都跟此虚拟机无关,所以也就是为什么别的地方都无法正常使用docker命令,会提示ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这也就不难理解,Docker Toolbox原理就是在Mac上启动一个Linux虚拟机运行docker服务。
注意:docker-machine是用来管理虚拟机的,所以该工具命令可以在任何终端窗口运行。
本文参考
- 话说最新发布的Docker Toolbox是什么鬼?:http://dockone.io/article/594
- Docker Machine菜鸟教程:https://www.runoob.com/docker/docker-machine.html
- Mac OS安装Docker容器的3种方式与差别:https://developer.aliyun.com/article/692030
发表评论