K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 nerdctl
背景
2020 年 12 月初,Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时。
弃用 Docker 带来的,可能是一系列的改变,包括不限于:
- 容器镜像构建工具
- 容器 CLI
- 容器镜像仓库
- 容器运行时
专题文章《K8S 1.20 弃用 Docker 评估》会从多方面分析由此带来的变动和影响。
- 《K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别》 主要介绍 镜像格式的变化
- 《K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品》 主要介绍 Docker CLI 的替代产品及个人推荐 - RedHat 3件套 - Buildah、Podman 和 Skopeo
书接上文,今天来介绍 Docker CLI 替代产品的另一种选择:nerdctl。
nerdctl
简介
nerdctl:是由 containerd 开源的、contaiNERD CTL,这是一个用于 containerd 的,且和 Docker 兼容的 CLI,另外还支持 Compose。
典型应用场景
K8S 1.20+ Node 上做容器 Debug
如果你最近刚刚开始使用 K8S 1.20 及以上版本,并且 CRI 选择了 containerd ,那么你会注意到 containerd 默认带的 CLI - ctr
相比 Docker CLI 发生了较大变化,且存在以下问题:
与 Docker CLI 不兼容,对用户不友好。另外,ctr
缺少以下类似 Docker CLI 的命令:
docker run -p <PORT>
docker run --restart=always --net=bridge
- 使用
~/.docker/config.json
配置docker pull
以及认证助手工具如docker-credential-ecr-login
docker logs
而 nerdctl
最主要的优点就是几乎完全兼容 Docker CLI,那么 nerdctl
在 K8S 集群中 debug 就很方便。
仅有的一些差别在于 nerdctl
有 namespace 的概念(✍️备注:其实是 containerd 有 namespace 的概念),如下:
- default(默认)
- moby:Docker
- k8s.io:Kubernetes 集群
举例来说要列出 k8s 中的容器,需要:
nerdctl --namespace k8s.io ps -a
综上,在新版本 K8S 中,为了用户体验的一致性,建议:
- 在 K8S Node 上都安装
nerdctl
,安装步骤: - 通过
alias
命令,实现和之前版本体验一致,操作如下:
vi ~/.bashrc
因为主要是用于 K8S Node 上 debug,所以直接这么写:
alias docker='nerdctl -n k8s.io'
安装和使用
curl -fsSLO https://github.com/containerd/nerdctl/releases/download/v0.13.0/nerdctl-0.13.0-linux-amd64.tar.gz
tar xvzf nerdctl-0.13.0-linux-amd64.tar.gz -C /usr/local/bin/ nerdctl
完整的使用手册见:nerdctl README,可以看到是基本上和 Docker 命令一样。
总结
在 K8S 1.20+ Node 上做容器 Debug,需要用到 CLI,建议使用 nerdctl
,并且 alias
成 Docker 提供一致的体验。
至于个人电脑或是操作机,建议不要替换,直接用 Docker 全套它不香吗?
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 nerdctl的更多相关文章
- 关于Kubernetes(简称K8S)的开启及基本使用,基于Docker Desktop & WSL2
背景介绍 Kubernetes(简称k8s)已成为目前业界容器编排的事实标准,其搭配Docker可建立非常高效便捷的高可扩展.高可用应用服务架构. Kubernetes的名字来自希腊语,意思是&quo ...
- [k8s]docker calico网络&docker cluster-store
docker cluster-store选项 etcd-calico(bgp)实现docker夸主机通信 配置calico网络 - 启动etcd etcd --listen-client-urls h ...
- 如何在K8S中优雅的使用私有镜像库 (Docker版)
前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...
- jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(2)
前言:上篇已介绍了jenkins在k3s环境部署,本篇继续上篇讲述流水线构建部署流程 1.从gitlab上拉取代码步骤 在jenkins中,新建一个凭证:Manage Jenkins -> Ma ...
- 温故知新Docker概念及Docker Desktop For Windows v3.1.0安装
Docker 简介 什么是Docker? Docker是一个开放源代码软件项目,项目主要代码在2013年开源于GitHub.它是云服务技术上的一次创新,让应用程序布署在软件容器下的工作可以自动化进行, ...
- 建立docker私有库(docker registry)(转)
建立docker私有库(docker registry) 博客分类: docker 我的目标还是无互联网安装,部署内部的docker私有库,目前docker镜像的获得还是需要互联网,将下载好的do ...
- Windows 下安装使用docker swarm machine docker toolbox
下载docker 集成安装环境 http://get.daocloud.io/#install-toolbox 这个网站很不错,下载 这个集成了 docker docker-machine ,还有gi ...
- Docker Architecture、Docker Usage
目录 . 引言 - 为什么要有Docker技术 . Docker简介 . Docker安装.部署.使用 . Docker安全 . Docker底层实现 . Docker网络配置 . Dockerfil ...
- 【云计算】Docker云平台—Docker进阶
Docker云平台系列共三讲,此为第二讲:Docker进阶 参考资料: 五个Docker监控工具的对比:http://www.open-open.com/lib/view/open1433897177 ...
- Docker学习笔记 — Docker私有仓库搭建【转载】
标签: Docker 2015-03-10 21:08 24190人阅读 评论(0) 收藏 举报 分类: Docker(26) 目录(?)[+] 和Mavan的管理一样,Dockers不仅 ...
随机推荐
- 有状态软件如何在 k8s 上快速扩容甚至自动扩容
概述 在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤? 申请虚机/物理机 安装依赖 下载安装包 按规范配置主机名, hosts 配置网络: 包括域名, DNS, ...
- 《MySQL必知必会》之快速入门游标和触发器
第二十四章 使用游标 本章将介绍什么是游标以及如何使用游标 游标 之前的select语句检索出来的数据,没有办法得到第一行或者下一行 有时,需要在检索出来的行中前进或后退一行或多行.这就是使用游标的原 ...
- 常用的渗透测试工具——SQLMap安装
SQLMap是一个自动化的SQL注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL.Qracle.PostgreSQL.Microsoft ...
- 【JVM】根节点枚举与安全点
本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 转载请在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益.让我们一起维护 ...
- Jmeter 之吞吐量控制器
作用: 吞吐量控制器可用来模拟混合场景的压测业务,即一部分用户执行场景A,一部分用户执行场景B 字段说明: Total Excutions:执行请求总数 Percent Excutions:执行线程数 ...
- java线程基础知识整理
目录 线程基本概念 1.java实现线程 2.线程的生命周期 3.线程常用的方法 3.1.sleep() 3.2.interrupt方法 3.3.stop方法 4.线程调度 4.1.常见的线程调度模型 ...
- 如何进行动态ip的域名解析设置?
如何进行动态ip的域名解析设置?目前,有一部分域名客户出于节省成本.技术验证等因素,会把自己家里或是部门的电脑用来当做Web服务器.mail服务器或是ftp服务器.如果想提供给其他人长期浏览,一般都要 ...
- RealWorld CTF 5th ShellFind 分析
前言 RealWorld CTF 5th 里的一道iot-pwn,根据真实设备固件改编而成,觉得题目贴近iot实战且很有意思,故在此记录一下复现过程. 题目分析 题目描述 Hello Hacker. ...
- 分布式协议与算法-Quorum NWR
1.强一致性与最终一致性 1.1强一致性 强一致性能保证写操作完成后,任何后续访问都能读到更新后的值:强一致性可以保证从库有与主库一致的数据.如果主库突然宕机,我们仍可以保证数据完整.但如果从库宕机或 ...
- Django3.X使用富文本编辑器kindereditor上传图片时一直转圈圈,如何解决
问题描述: 在写bbs项目的时候,老师用的是Django1.X结合富文本编辑器kindeditor,实现了图片上传,但是我在用Django3.X的时候,代码和老师一模一样,上传图片的时候一直转圈圈?? ...