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

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

声明: 本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Docker

利用Shell脚本对docker容器服务进行健康检查监控钉钉告警并重启

2024-12-16 10:52:32

Docker

Docker 最佳实战:Ubuntu 22.04 LTS 在线安装 Docker

2024-12-19 21:14:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索