不使用 docker-desktop 怎么启用 docker 和 docker buildkit

在 macOS 上，Docker Desktop 是一个非常流行的选择，但它并不是唯一的方案。如果你不想使用 Docker Desktop，或者希望寻找一个更轻量级的替代方案，Colima 是一个不错的选择。Colima 是一个用于 macOS 和 Linux 的容器运行时管理工具，它提供了极简的设置流程，同时支持多种容器运行时，包括 Docker 和 Kubernetes。本文将介绍如何使用 Colima 启用 Docker 和 Docker BuildKit，让你在不依赖 Docker Desktop 的情况下，也能高效地进行容器开发。

一、Colima 简介

Colima 是一个开源项目，旨在为 macOS 和 Linux 提供一个轻量级的容器运行时环境，支持 Intel 和 Apple Silicon 架构。它具有以下特点：

简单易用的 CLI 接口：Colima 提供了简洁的命令行界面，用户可以通过简单的命令快速启动和管理容器。

自动端口转发：无需手动配置端口映射，Colima 会自动处理。

支持多种容器运行时：除了 Docker，还支持 Containerd、Incus 和 Kubernetes。

多实例支持：可以同时运行多个容器实例，满足不同开发需求。

Colima 的 GitHub 仓库地址是 https://github.com/abiosoft/colima，你可以在这里找到更多详细信息。

二、安装 Colima 和 Docker

1. 安装 Colima

Colima 支持多种安装方式，最推荐的方式是通过 Homebrew 安装。打开终端，运行以下命令：

brew install colima

如果你希望使用最新版本，可以安装开发分支：

brew install --HEAD colima

2. 安装 Docker

Colima 依赖 Docker 客户端来与容器运行时交互。通过 Homebrew 安装 Docker：

brew install docker

安装完成后，Docker 客户端会自动配置好环境变量，无需额外设置。

三、启动 Docker 环境

安装完成后，可以通过 Colima 启动一个包含 Docker 和 Kubernetes 的容器环境。运行以下命令：

colima start --kubernetes

这个命令会启动一个虚拟机，其中包含了 Docker 和 Kubernetes 的运行时环境。默认情况下，Colima 会为虚拟机分配 2 个 CPU、2GiB 内存和 100GiB 存储空间。如果需要调整这些参数，可以在启动时通过额外的标志进行设置。例如，启动一个具有 4 个 CPU 和 4GiB 内存的虚拟机：

colima start --cpu 4 --memory 4

你也可以通过 colima stop 停止虚拟机，或者通过 colima delete 删除虚拟机，重新创建一个全新的实例。

四、配置和使用 Docker BuildKit

Docker BuildKit 是一个现代化的构建工具，它提供了更快的构建速度和更多的功能。从 Docker 23.0.0 版本开始，BuildKit 已经默认启用，这意味着你无需通过环境变量（如 DOCKER_BUILDKIT=1）来启用它。但如果你需要使用 docker buildx 提供的高级功能，你可能需要手动安装 docker-buildx 插件。

1. 安装 Docker Buildx

docker-buildx 是一个 Docker 官方提供的扩展插件，用于支持 BuildKit 的高级功能，例如多平台构建和缓存优化。通过 Homebrew 安装 docker-buildx：

brew install docker-buildx

安装完成后，你可以立即运行以下命令来验证 docker-buildx 是否正常工作：

docker-buildx version

如果你看到类似以下的输出，说明 docker-buildx 已经成功安装：

Extended build capabilities with BuildKit

2. 配置 Docker Buildx

虽然 docker-buildx 已经安装成功，但默认情况下，docker buildx 命令是不可用的。这是因为 docker buildx 是一个扩展命令，需要通过符号链接将其添加到 Docker 的 CLI 插件目录中。运行以下命令来完成这一步：

mkdir -p $HOME/.docker/cli-plugins
ln -sf /opt/homebrew/bin/docker-buildx $HOME/.docker/cli-plugins/docker-buildx

完成符号链接后，你就可以通过 docker buildx 命令直接使用 BuildKit 的功能了。运行以下命令来验证：

docker buildx version

如果一切正常，你会看到 docker buildx 的版本信息。

3. 使用 BuildKit

现在，你直接在 Dockerfile 里面使用，BuildKit 提供的高级特性，比如

RUN --mount=type=bind,target=/path/to/cache,source=./local/cache \
/path/to/cache/build.sh

五、总结

通过 Colima 和 Docker Buildx，我们可以在 macOS 上轻松地启用 Docker 和 BuildKit，而无需依赖 Docker Desktop。Colima 提供了一个轻量级的容器运行时环境，支持多种运行时和架构，而 Docker Buildx 则为 Docker 构建提供了强大的功能。这种组合不仅节省了系统资源，还提供了更高的灵活性和扩展性。如果你正在寻找一个轻量级的容器开发环境，Colima 和 Docker Buildx 绝对值得一试。

六、References

colima: Issue #273 Install buildx