containerd与docker的区别是什么

区别:1、containerd不需要经过dockershim,所以调用链更短,docker需要经过所以调用链更长;2、docker调用cni是“docker-shim”,containerd调用cni是“containerd-cri”。

containerd与docker的区别是什么

本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。

containerd与docker的区别是什么

在使用k8s时,使用docker和containerd的调用链如下所示:

01.png

不难看出,使用containerd时,调用链更短,不再需要经过dockershim和docker

数据目录

相信大家都知道docker的数据目录默认是在/var/lib/docker目录下;而切换到containerd时,数据目录默认为/var/lib/containerd

牛NIUCMS本地O2O系统 牛NIUCMS本地O2O系统

牛NIUCMS本地O2O系统是一个以php+mysql进行开发的o2o网站系统。NIUCMS是一款强大的网站管理系统。支持智慧城市、智慧小区、智慧乡村、本地生活门户、本地O2O平台的构建。请注意以下几点:1、这套源码必须要服务器支持伪静态,是支持.htaccess规则的伪静态,一般Apache服务器支持,别搞的下载回去以后说什么缺 少文件,其实源码并非缺少文件。2、这套源码请在php 5.4环境下

牛NIUCMS本地O2O系统 0 查看详情 牛NIUCMS本地O2O系统

日志

当我们在使用k8s时,如果使用了docker作为运行时,其实容器程序日志的落盘是由docker来负责的。/var/log/pod和/var/log/container下的日志文件会软连接到/var/lib/docker下对应的日志文件,如果还需要对日志做一些参数配置,直接修改docker配置文件即可;而如果我们现在使用containerd作为运行时,则容器日志的落盘将由kubelet来负责,/var/log/container下的日志文件会软连接到/var/log/pod下的日志文件,如果需要调整日志参数,则需要修改kubelet相关配置

CNI

当使用docker作为运行时时,kubelet中的docker-shim负责调用cni;而当使用containerd作为运行时时,containerd中内置的containerd-cri负责调用cni

[plugins."io.containerd.grpc.v1.cri".cni]       
bin_dir = "/opt/cni/bin"       
conf_dir = "/etc/cni/net.d"

流服务

熟悉k8s的朋友都知道,kubectl exec 和 kubelet log等命令需要通过apiserver与容器通信,这其中就涉及到了流服务。而docker API本身支持,kubelet中的docker-shim通过docker API流转发;但containerd却要对此进行单独配置

[plugins."io.containerd.grpc.v1.cri"]     
stream_idle_timeout = "4h0m0s"    
 stream_server_address = "127.0.0.1"    
 stream_server_port = "0"     
enable_tls_streaming = false

推荐学习:《docker视频教程》

以上就是containerd与docker的区别是什么的详细内容,更多请关注其它相关文章!

本文转自网络,如有侵权请联系客服删除。