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 常用命令与用法
由于这个命令的用户跟Docker相似,可以参考我以前关于Docker常用命令的文章进行对比练习。
1. 查看 nerdctl 版本
nerdctl --version
显示当前安装的 nerdctl 版本。
2. 拉取镜像
nerdctl pull nginx:1.25
3. 运行容器
nerdctl run 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
7. 删除容器
nerdctl rm
-f :强制删除正在运行的容器
8. 查看容器日志
nerdctl logs
9. 删除镜像
nerdctl rmi
删除指定的镜像。例如:
10. 查看镜像列表
nerdctl images
11. 执行命令到正在运行的容器
nerdctl exec -it command>
nerdctl exec -it my-container /bin/bash
12. 构建镜像
nerdctl build -t
13. 创建网络
nerdctl network create
nerdctl network create my_network
14. 将容器连接到网络
nerdctl network connect
nerdctl network connect my_network my-container
15 登录镜像仓库
# 登录
nerdctl login --username xxx --password xxx IP或域名
# 退出
nerdctl logout
还有tag打标签,push/pull推送和拉取镜像,save/load导出和导入镜像等操作就不展开讲解了,基本和Docker一样
还有其他有意思并实用的用法等李哥摸索出来再分享给大家
如有帮助,请点个赞和“在看”!如有不足,敬请指出!感谢你的关注与支持。
路虽远,行则将至!
事虽难,做则必成!共勉!