Docker Desktop简介

Docker Desktop 是Docker公司面向 Windows Atlas / Linux Atlas / macOS 桌面推出的集成多项开源技术的虚拟机运行docker容器的OneBox技术。也就是说,不需要在Host主机操作系统中安装 容器运行时(Container Runtimes) 以及各种复杂的软件堆栈,只需要Host主机能够运行虚拟化(通常已经内置),就可以得到一个完整的已经预先配置的Docker运行环境以及一键安装 Kubernetes Atlas (简化单机版)。非常适合对底层技术了解不多且专注于应用开发的程序员。

备注

2023年底,我尝试采用开源的 Colima 来代替 Docker Desktop,以便能够深入学习:

Docker Desktop on Mac vs. Docker Toolbox

Docker Toolbox

早期在Mac OS X上运行Docker实际上是先在OS X上安装运行VirtualBox,然后在VirtualBox中运行一个Linux虚拟机,最后Docker实际上是运行在Linux虚拟机中。而在Mac OS X上执行的 docker 指令则通过虚拟网络访问远程虚拟机内的Docker服务来实现管理。这种运行模式,在Mac上 /usr/local/bin 目录下安装了 dockerdocker-composedocker-machine 。Toolbox会使用 docker-machine 来提供VirtualBox VM,虚拟机命名为 default ,并运行一个 boot2docker 的Linux发行版。

在执行 dockerdocker-compose 命令之前,通常已经执行了环境设置命令 eval $(docker-machine env default) ,这样 dockerdocker-compose 就知道如何与VirtualBox中的Docker Engine通讯。

../../_images/toolbox-install.png

Docker Desktop on Mac

现在推荐采用Docker Desktop on Mac模式来运行Mac-native模式的Docker,也就是安装在 /Applications 中,实际上是创建了一个完整的application bundle,位于 /Applications/Docker.app/Contents/Resources/bin

Docker Desktop on Mac的关键技术:

  • 使用 Docker HyperKit 代替了 VirtualBox。Hyperkit是轻量级的macOS虚拟化解决方案,基于macOS 10.10 Yosemite或更高版本的Hypervisor.framework。

  • Docker Desktop不再使用 docker-machine 来构建VM,而Docker Engine API是直接在Mac主机的 /var/run/docker.sock 提供socket 这也是默认的Docker和Docker Compose客户端使用连接到Docker dameon的连接。

../../_images/docker-for-mac-install.png

备注

现在已经全面使用 Docker Desktop ,当前在 Apple ARM架构芯片M1 Pro MacBook Pro笔记本上的 macOS 运行Docker Desktop实际上是一个 QEMU 虚拟机中 qemu-system-aarch64