阿毛
It's me !
想你所想
Docker Toolbox在Mac上的运行原理

因为本人MacOS版本不再受Docker Desktop官方支持,所以本人使用的Docker Toolbox,这里简单总结下对Docker Toolbox的理解。

当Docker Toolbox安装完成后,你会发现你的应用列表里多了两个应用图标

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-9.png

这时,我们只需要单机第二个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虚拟机

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-4.png

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

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-3.png

启动完成后

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-10.png

这时,在这个终端窗口就可以正常操作docker了。

我们打开VirtualBox,可以看到这样的内容

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-11.png

这个就正是上面创建启动的Docker虚拟机!!(通过docker-machine ls也可以验证)而上面的终端窗口,其实就相当于此虚拟机的一个终端而已。

你可以紧接着在上图VirtualBox界面点击“显示”按钮,它会为你打开一个该虚拟机的终端窗口

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-12.png

在该窗口中你也可以操作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是用来管理虚拟机的,所以该工具命令可以在任何终端窗口运行。


本文参考

发表评论

textsms
account_circle
email

想你所想

Docker Toolbox在Mac上的运行原理
因为本人MacOS版本不再受Docker Desktop官方支持,所以本人使用的Docker Toolbox,这里简单总结下对Docker Toolbox的理解。 当Docker Toolbox安装完成后,你会发现你的应用列表里多了…
扫描二维码继续阅读
2021-03-02