一、Docker or Containerd如何选择
二、Containerd安装
1、官网地址
https://containerd.io/
2、下载
containerd_1.4.3版本:
网盘地址:
链接:https://pan.baidu.com/s/1VttkidfM075V3slavDnocA?pwd=b2ms
提取码:b2ms
github地址:
https://github.com/containerd/containerd/releases/tag/v1.4.3
3、解压
tar -zxvf cri-containerd-cni-1.4.3-linux-amd64.tar.gz
4、删除一些不需要的文件
cd /data/soft/containerd
rm -rf opt
rm -rf ./etc/cni
find . -type f
5、拷贝文件到根目录
cp -r etc/ /
cp -r usr/ /
6、创建目录生成配置文件
mkdir /etc/containerd
containerd config default > /etc/containerd/config
7、修改配置文件
vi /etc/containerd/config.toml
8、进行重启
systemctl enable containerd
systemctl restart containerd
9、查看containerd的状态
systemctl statuscontainerd
三、containerd的实践操作
1、ctr -h
查看帮助
2、ctr i -h
镜像相关操作
(1)查询镜像
ctr i ls
(2)拉取镜像
这样是错误的,不会像docker那样自动添加 docker.io/library/redis:alpine
ctr i pull redis:alpine
需要加上 docker.io/library/
ctr i pull docker.io/library/redis:alpine
再查询一下镜像,就有了
ctr i ls
(3)命名空间
1)查看命名空间帮助命令
ctr ns -h
2)查看命名空间
ctr ns ls
(4)docker和containerd的命名空间
这里有一个疑问,如果有docker的话,doker下载的镜像在命名空间这里能看到吗?下面我们安装一个docker进行验证一下。
1)安装docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker.service
docker version
2)查看一下命名空间
还是只有一个default
ctr ns ls
3)docker下载一个镜像
使用docker下载一个redis
docker pull redis:alpine
4)再次查看命名空间
此时再查看一下命名空间
发现多了一个moby,这是因为docker改革了
ctr ns ls
5)默认命名空间下的镜像
我们看一下默认的default命名空间下有哪些镜像,还是之前下载的那一个。
ctr -n default i ls
5)moby命名空间下的镜像
再看下moby的命名空间,里面什么也没有。
ctr -n moby i ls
6)moby命名空间下为空的原因
这是因为镜像的存储目录不一样:
containerd的镜像存储在
/var/lib/containerd
docker的镜像存储在
/var/lib/docker
(5)containerd如何使用docker的镜像
1)查看doker的镜像
docker images
2)打个标签
3)push上去
4)使用ctr拉取下来
(6)容器管理
1)启动容器
ctr run -t -d docker.io/library/redis:alpine redis
2)查看启动的容器
ctr c ls
3)删除容器
ctr c rm redis
ctr c ls
(7)containerd的任务的概念
1)查看任务
ctr t ls
2)杀掉任务
ctr t kill redis
ctr t ls
3)删除任务
ctr t rm redis
ctr t ls
(8)docker容器启动和containerd有什么关系吗?
1)后台启动一个docker容器
docker run -idt redis:alpine
2)查询下moby命名空间下的任务
ctr -n moby t ls
我们发现可以对应起来
所以这里得出一个结论,在容器运行时,他们的命名空间不一样!!!containerd是用的default、docker用的是moby。
后面如果用到k8s,会生成一个k8s.io的命名空间且只用这个命名空间!!
(9)crictl命令
这是k8s提供的命令,方便我们更好的从docker转换过来,命令很相似。
1)查看镜像
crictl images
2)查看容器
crictl ps
3)查看pods
crictl pods
4)帮助
crictl -h