nerdctl:一个酷似docker又胜于docker的命令行工具

艺帆风顺 发布于 2025-04-07 17 次阅读


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常用命令的文章进行对比练习。

【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一样

还有其他有意思并实用的用法等李哥摸索出来再分享给大家

如有帮助,请点个赞和“在看”!如有不足,敬请指出!感谢你的关注与支持。

路虽远,行则将至!

事虽难,做则必成!共勉!

往期精彩文章