Nerdctl 容器管理工具完全指南
项目概述
Nerdctl 是一个基于 Containerd 的 Docker 兼容命令行工具,旨在提供与 Docker 类似的用户体验。该项目采用 Go 编程语言开发,支持多种高级功能,包括 Docker Compose、Rootless 模式、懒拉取镜像、加密镜像等特性。
核心特性
基础功能
- 与 Docker 相同的用户界面和体验
- 支持 Docker Compose (
nerdctl compose up) - 支持 Rootless 模式,无需 slirp 开销
- 支持懒拉取技术(Stargz、Nydus、OverlayBD)
- 支持加密镜像(ocicrypt)
- 支持 P2P 镜像分发(IPFS)
- 支持容器镜像签名和验证(cosign)
高级功能
Nerdctl 提供了一些在 Docker 中不存在的独特功能:
- 懒拉取技术:使用 Stargz、Nydus、OverlayBD、SOCI 快照器实现按需镜像拉取
- 镜像加密:使用 ocicrypt 进行镜像加密和解密
- P2P 分发:通过 IPFS 实现点对点镜像分发
- Cosign 集成:支持容器镜像的签名和验证
安装方法
二进制文件安装
- 下载最新版本的二进制文件
- 解压下载的文件
- 将 nerdctl 可执行文件移动到系统路径中
Brew 安装(Linux)
在支持 Brew 包管理器的 Linux 系统上,可以直接通过以下命令安装:
brew install nerdctl
macOS 安装
在 macOS 上推荐使用 Lima 项目:
brew install lima
limactl start
lima nerdctl run -d --name nginx -p 127.0.0.1:8080:80 nginx:alpine
依赖组件
要完全使用 nerdctl 的功能,需要安装以下组件:
- CNI 插件:用于容器网络,推荐 v1.1.0 或更高版本
- BuildKit:用于镜像构建,推荐 v0.11.0 或更高版本
- RootlessKit 和 slirp4netns:用于 Rootless 模式
使用示例
基础容器操作
运行一个 Alpine 容器:
nerdctl run -it --rm alpine
镜像构建
使用 BuildKit 构建镜像:
nerdctl build -t foo /some-dockerfile-directory
nerdctl run -it --rm foo
Docker Compose 支持
运行 Docker Compose 项目:
nerdctl compose -f ./examples/compose-wordpress/docker-compose.yaml up
Kubernetes 调试
列出本地 Kubernetes 容器:
nerdctl --namespace k8s.io ps -a
Rootless 模式配置
启动 rootless containerd:
containerd-rootless-setuptool.sh install
在 rootless 模式下运行容器:
nerdctl run -d -p 8080:80 --name nginx nginx:alpine
项目结构
Nerdctl 项目采用模块化设计,主要包含以下核心包:
- cmd/nerdctl:主命令行接口
- pkg/:各种功能包,包括构建器、网络、存储等
- docs/:详细文档和配置指南
- examples/:使用示例和演示项目
开发指南
从源码编译
运行以下命令编译和安装 nerdctl:
make && sudo make install
项目使用 Go 语言开发,需要安装 Go 开发环境。在提交代码时,需要签署开发者证书。
网络架构
Nerdctl 使用 RootlessKit 实现无根容器的网络隔离,该架构确保了在非特权用户环境下的安全容器网络。
配置管理
用户可以通过以下位置进行配置:
- 系统级配置:
/etc/nerdctl/nerdctl.toml - 用户级配置:`~/.config/nerdctl/nerdctl.toml
多平台支持
Nerdctl 支持多种操作系统和平台:
- Linux:原生支持
- macOS:通过 Lima 虚拟机支持
- FreeBSD:支持 FreeBSD jails
- Windows:在 WSL2 中支持 Linux 容器
故障排除
项目提供了详细的 FAQ 和故障排除文档,涵盖了常见问题的解决方案和最佳实践建议。
Nerdctl 作为一个功能丰富的容器管理工具,为开发者和运维人员提供了现代化的容器管理体验,特别是在支持新兴容器技术方面具有显著优势。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




