containerd

Docker和containerd是现代容器技术中的两个重要组件,它们之间有着紧密的关系,但也存在一些关键的区别。

Docker与containerd的关系:

  • containerd是Docker的一部分:containerd最初是Docker引擎的一部分,用于管理容器的生命周期。随着容器技术的发展,containerd在2017年被捐赠给了云原生计算基金会(CNCF)进行独立发展。
  • Docker使用containerd:在Docker的早期版本中,containerd作为Docker引擎的一个组件运行,负责底层的容器运行时管理。

Docker与containerd的区别:

  1. 定位和功能

    • Docker:Docker是一个完整的容器平台,提供了容器构建(通过Dockerfile)、容器镜像管理、容器运行时等功能。Docker还包括Docker Hub这样的容器镜像仓库服务。
    • containerd:containerd是一个轻量级的容器运行时,专注于容器运行时和容器镜像管理。它不包括容器构建等高级功能。
  2. 架构

    • Docker:Docker包含客户端(Docker CLI)和守护进程(Docker daemon)。守护进程负责管理容器的生命周期,而客户端用于与守护进程通信。
    • containerd:containerd设计上更为简洁,通常嵌入到系统中,由系统的init进程直接管理,不需要守护进程。
  3. 复杂性

    • Docker:相对复杂,因为它提供了广泛的工具和功能,包括网络管理、存储卷管理等。
    • containerd:更加专注于运行时功能,去除了Docker的一些额外特性,使得它更轻量级。
  4. 命令行工具

    • Docker:Docker CLI提供了广泛的命令,如docker rundocker builddocker pulldocker push等,用于管理容器的整个生命周期。
    • containerd:containerd的命令行工具ctr主要用于调试和低级操作,功能不如Docker CLI全面。
  5. 社区和生态

    • Docker:拥有庞大的社区和生态系统,提供了大量的预构建镜像和自动化工具。
    • containerd:由CNCF托管,也得到了广泛的社区支持,尤其是在Kubernetes生态系统中。
  6. 兼容性

    • Docker:虽然Docker支持OCI(Open Container Initiative)标准,但它有一些特定的扩展和特性。
    • containerd:原生支持OCI标准,并且与Kubernetes的CRI(Container Runtime Interface)兼容,这使得它在Kubernetes等容器编排系统中更受欢迎。

总的来说,containerd可以看作是Docker的一个更精简、专注于运行时的版本,而Docker则是一个更全面的容器平台。随着容器技术的成熟,containerd等轻量级运行时在云原生应用和Kubernetes等容器编排系统中的使用越来越普遍。

安装部署containerd

1、网络源安装

docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站

root@node01:~/bin# apt-cache madison containerd
containerd | 1.7.12-0ubuntu2~20.04.1 | http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 Packages
containerd | 1.6.12-0ubuntu1~20.04.3 | http://mirrors.aliyun.com/ubuntu focal-security/main amd64 Packages
containerd | 1.3.3-0ubuntu2 | http://mirrors.aliyun.com/ubuntu focal/main amd64 Packages
root@node01:~/bin# apt install -y containerd=1.7.12-0ubuntu2~20.04.1
root@node01:~/bin# systemctl start containerd
root@node01:~/bin# systemctl status containerd
root@node01:~/bin# systemctl enable containerd
root@node01:~/bin# cat /etc/containerd/config.toml |grep sandbox_image
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

2、源码安装

https://github.com/containerd/containerd/releases/download/v1.7.21/containerd-1.7.21-linux-amd64.tar.gz

root@node01:~# tar zxfv containerd-1.7.21-linux-amd64.tar.gz 
bin/
bin/ctr
bin/containerd
bin/containerd-shim-runc-v2
bin/containerd-shim-runc-v1
bin/containerd-shim
bin/containerd-stress
root@node01:~# cp bin/containerd /usr/local/bin/
root@node01:~# cp bin/ctr /usr/local/bin/
root@node01:~# containerd config default > /etc/containerd/config.toml
root@node01:~# nohup containerd &

containerd常用命令

USAGE:
   ctr [global options] command [command options] [arguments...]

COMMANDS:
   version                              Print the client and server versions
   images, image, i           Manage images
   namespaces, namespace, ns  Manage namespaces
   run                        Run a container
   tasks, t, task             Manage tasks
   info                       Print the server info
   help, h                    Shows a list of commands or help for one command

1、查看版本信息

2、列出镜像列表

3、列出命名空间

4、创建命名空间

5、查看指定命名空间的镜像列表

ctr --namespace=命名空间 images ls

6、拉取镜像

ctr -n 命名空间 images pull 镜像仓库/镜像名

7、删除镜像

ctr -n 命名空间 images rm 镜像名

8、导出镜像

ctr -n 命名空间 images export 文件名.tar 镜像名

9、导入镜像

ctr -n 命名空间 images import 文件名.tar

10、打标签

ctr -n 命名空间 images tag 源名:标签 新名:标签

11、导入docker保存的镜像

Docker导出的镜像通常是一个压缩的tar文件,包含了镜像层和元数据。containerd的ctr工具可以解压这个tar文件并将其作为镜像导入。

12、运行容器并查看当前运行中容器的task任务

ctr -n 命名空间 run -d 镜像名 工作名

ctr -n 命名空间 task ls

13、进入task任务

ctr -n 命名空间 task exec --exec-id 分配唯一id -t taskid /bin/bash

14、停止task

ctr -n 命名空间 task kill --signal 9 工作名

  • --signal 9 指定发送给任务的信号,在这里是信号9(SIGKILL),它会立即终止任务而不会给任务任何清理的机会。

15、删除task

ctr -n 命名空间 task rm -f task名

16、列出容器

17、删除容器

ctr -n 命名空间 containers rm 容器名

命令对比

功能Docker命令containerd命令

拉取镜像

docker pull

ctr images pull

列出镜像

docker images

ctr images list

运行容器

docker run

ctr run

列出容器

docker ps

ctr tasks list

停止容器

docker stop

ctr tasks kill --signal

删除容器

docker rm

ctr containers rm

删除镜像

docker rmi

ctr images rm

进入容器

docker exec -it <container> /bin/bash

ctr tasks exec --exec-id <exec-id> -t <container> /bin/bash

导出容器镜像

docker save <image> -o <output-file>

ctr images export <image> -o <output-file>

导入容器镜像

docker load -i <input-file>

ctr images import <input-file>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值