如何通过DockerRuntime切换不同的容器运行时

小明姑娘_6002

小明姑娘_6002

2026-04-06

550人浏览

原创

kubernetes 自 v1.20 起弃用 docker,v1.24 彻底移除 dockershim,因此无法通过 dockerruntime 切换运行时;docker 不符合 cri 标准,kubelet 不再识别 docker:// 协议,也不存在 dockerruntime 配置项。

如何通过dockerruntime切换不同的容器运行时

在 Kubernetes 中,Docker 已于 v1.20 版本起被正式弃用(dockershim 移除),因此无法再通过 DockerRuntime 切换容器运行时。Kubernetes 不再原生支持 Docker 作为运行时,而是要求使用符合 CRI(Container Runtime Interface)标准的运行时,如 containerd、CRI-O 等。

为什么不能“通过 DockerRuntime 切换”?

Docker 本身不是 CRI 运行时,它通过 dockershim(一个适配层)与 kubelet 通信。该 shim 已在 v1.24 及以后版本中完全移除。这意味着:

  • Kubernetes 不再识别 docker:// 运行时协议
  • 没有名为 DockerRuntime 的合法运行时配置项(如 runtimeClass 或 kubelet --container-runtime 参数中不存在该值)
  • 所谓“切换到 DockerRuntime”实际是误解——Docker 不再是 Kubernetes 支持的运行时选项

正确切换容器运行时的方法

要使用不同运行时(如 containerd 或 CRI-O),需在节点层面配置 kubelet,并确保运行时已安装且启用 CRI 接口:

  • 安装并启动目标运行时:例如安装 containerd 并确认其监听 /run/containerd/containerd.sock
  • 配置 kubelet 启动参数:
    • 设置 --container-runtime-endpoint=unix:///run/containerd/containerd.sock
    • (可选)指定 --container-runtime=remote(默认值,表示使用远程 CRI 运行时)
  • 重启 kubelet:使配置生效,kubelet 将通过 CRI 与 containerd 通信
  • 验证运行时类型:执行 kubectl get nodes -o wide,VERSION 列旁的 CONTAINER-RUNTIME 字段会显示类似 containerd://1.7.2

如何为 Pod 指定不同运行时(如 containerd vs CRI-O)?

需结合 RuntimeClass 资源实现运行时绑定:

  • 先在节点上部署对应运行时(如 node-A 装 containerd,node-B 装 CRI-O)
  • 为每种运行时创建 RuntimeClass 对象,指定 handler 和对应节点 label
  • 在 Pod spec 中添加:
    runtimeClassName: my-containerd-handler
    kubelet 将根据 handler 查找匹配的 RuntimeClass,并调度到装有对应运行时的节点

常见误区澄清

以下操作不会**让 Kubernetes “切换回 DockerRuntime”:

  • 安装 Docker CE 并启动 dockerd —— 它不提供 CRI 接口,kubelet 无法调用
  • 修改 kubelet --runtime-cgroups 或 --docker 参数 —— 这些参数已在新版 kubelet 中删除
  • 在 Pod 中写 runtime: docker —— 该字段非法,API Server 会拒绝
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3068

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4409

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3689

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

386

15

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.10

3330

10

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

665

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4659

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5577

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2093

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习