1 nerdctl 简介
nerdctl 是一个命令行工具,旨在为用户提供与 Docker 相似的体验,但它是通过 containerd 来管理容器的。containerd 是一个高性能的容器运行时,用于管理容器的生命周期,包括镜像拉取、容器的创建、运行、停止等。nerdctl 的出现是为了简化和容器管理工具之间的差距,尤其是在不使用 Docker 的情况下,仍然能够获得类似 Docker 的体验。
nerdctl的目标并不是单纯地复制 docker 的功能,它还实现了很多 docker 不具备的功能,例如延迟拉取镜像(lazy-pulling)、镜像加密(imgcrypt)等
2 nerdctl 特点
- 兼容 Docker 命令:它的语法尽可能与 Docker 相似,减少用户的学习成本。
- 基于 containerd:nerdctl 是在 containerd 的基础上开发的,而 containerd 是一个较为轻量级的容器运行时,相比 Docker 它提供了更为精细的控制。
- 支持 Kubernetes 和其他容器相关的技术:nerdctl 在功能上与 Kubernetes 和容器的标准协作非常好,适用于那些不依赖 Docker 的环境。
- 跨平台支持:nerdctl 支持在 Linux、macOS 和 WSL(Windows Subsystem for Linux)环境中使用。
3 安装 nerdctl
nerdctl并不是默认安装的,需要手动安装。项目地址:
https://github.com/containerd/nerdctl/releases
1、下载安装包
wget https://github.com/containerd/nerdctl/releases/download/v2.0.0/nerdctl-2.0.0-linux-amd64.tar.gz
2、解压并安装
tar -xvf nerdctl-2.0.0-linux-amd64.tar.gz
mv nerdctl /usr/local/bin
将 nerdctl 安装到 /usr/local/bin 目录,确保它在你的 环境变量PATH 中
3、检查安装
[root@k8s-master ]# nerdctl version
WARN[0000] unable to determine buildctl version: exec: "buildctl": executable file not found in $PATH
Client:
Version: v2.0.0
OS/Arch: linux/amd64
Git commit: ef588dafa080e3dbc9c061ff3802affb66aef291
buildctl:
Version:
Server:
containerd:
Version: 1.6.33
GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
4 常用命令与用法
1. 查看 nerdctl 版本
nerdctl --version
显示当前安装的 nerdctl 版本。
2. 拉取镜像
nerdctl pull nginx:1.25
3. 运行容器
nerdctl run <options> <image_name> <command>
nerdctl run -d -p 80:80 --name=nginx --restart=always nginx
nerdctl run -it --rm alpine /bin/sh
用于启动一个容器,并执行指定的命令。常见选项包括:
- -d:后台运行
- –rm:容器退出后自动删除
- -it:交互式模式,通常和终端一起使用
4. 列出正在运行的容器
nerdctl ps
5. 列出所有容器(包括已停止的)
nerdctl ps -a
6. 停止/启动容器
nerdctl stop/start <container_id_or_name>
7. 删除容器
nerdctl rm <container_id_or_name>
-f :强制删除正在运行的容器
8. 查看容器日志
nerdctl logs <container_id_or_name>
9. 删除镜像
nerdctl rmi <image_name_or_id>
删除指定的镜像。例如:
10. 查看镜像列表
nerdctl images
11. 执行命令到正在运行的容器
nerdctl exec -it <container_id_or_name> <command>
nerdctl exec -it my-container /bin/bash
12. 构建镜像
nerdctl build -t <image_name> <dockerfile_directory>
13. 创建网络
nerdctl network create <network_name>
nerdctl network create my_network
14. 将容器连接到网络
nerdctl network connect <network_name> <container_id_or_name>
nerdctl network connect my_network my-container
15 登录镜像仓库
# 登录
nerdctl login --username xxx --password xxx IP或域名
# 退出
nerdctl logout
还有tag打标签,push/pull推送和拉取镜像,save/load导出和导入镜像等操作就不展开讲解了,基本和Docker一样