Containerd容器数据持久化存储,命名空间共享,与docker的集成
2.与其它Containerd容器共享命名空间:由于 Containerd 也有 namespaces 的概念,对于上层编排系统的支持,ctr 客户端 主要区分了 3 个命名空间分别是。通过docker创建容器并运行容器后,通过" ctr ns -f "会发现新增了一个docker的命名空间。k8s.io(k8s命名空间)、moby(docker命名空间)和default(默认的命名空间)
·
1. Containerd容器数据持久化存储:
## 实现把宿主机目录挂载至Containerd容器中,实现容器数据持久化存储
[root@node2 ~]# ctr c create busybox:latest busybox3 --mount
type=bind,src=/tmp,dst=/hostdir,options=rbind:rw
创建一个静态容器,实现宿主机目录与容器目录挂载
src=/tmp 表示宿主机目录
dst=/hostdir 表示容器中目录
## 查看容器列表:
[root@node2 ~]# ctr c ls
CONTAINER IMAGE RUNTIME
busybox busybox:latest io.containerd.runc.v2
busybox2 busybox:latest io.containerd.runc.v2
busybox3 busybox:latest io.containerd.runc.v2
## 启动容器
[root@node2 ~]# ctr t start -d busybox3
测试容器中的数据是否持久化:
## 进入容器
[root@node2 ~]# ctr -n default task exec --exec-id $RANDOM -t busybox3 sh
/ #
/ # ls /
bin dev etc home hostdir proc root run sys tmp usr var
/ # echo 111 > /hostdir/1.txt
/ # exit
## 查看宿主机的/tmp目录下是否有1.txt文件
[root@node2 ~]# cat /tmp/1.txt
111
2. 与其它Containerd容器共享命名空间:由于 Containerd 也有 namespaces 的概念,对于上层编排系统的支持,ctr 客户端 主要区分了 3 个命名空间分别是k8s.io(k8s命名空间)、moby(docker命名空间)和default(默认的命名空间)。
## 查看任务列表:
[root@node2 ~]# ctr tasks ls
TASK PID STATUS
busybox 1510 RUNNING
busybox3 1982 RUNNING
## 创建共享的容器:
[root@node2 ~]# ctr container create --with-ns "pid:/proc/1982/ns/pid"
busybox:latest busybox4
## 启动容器
[root@node2 ~]# ctr t start -d busybox4 bash
## 进入容器
[root@node2 ~]# ctr t -n default exec --exec-id $RANDOM -t busybox3 sh
[root@node2 ~]# ctr t -n default exec --exec-id $RANDOM -t busybox4 sh
3. Docker集成Containerd实现容器管理:
1>. 安装docker:
## 准备Docker安装YUM源
[root@node2 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun
.com/docker-ce/linux/centos/docker-ce.repo
## 安装Docker-ce
[root@node2 ~]# yum -y install docker-ce
2>. 修改Docker服务文件:
[root@node2 ~]# vim /usr/lib/systemd/system/docker.service
将其中[Service]标签中的
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改为:
ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --debug
3>. 重启docker服务:
## 重启docker daemon服务
[root@node2 ~]# systemctl daemon-reload
[root@node2 ~]# systemctl start docker
通过docker创建容器并运行容器后,通过" ctr ns -f "会发现新增了一个docker的命名空间
[root@node2 ~]# docker run -d busybox ##运行docker容器
[root@node2 ~]# docker ps -all ##查看docker镜像列表
## 查看命名空间
[root@node2 ~]# ctr ns ls
NAME LABELS
default
moby
更多推荐
已为社区贡献6条内容
所有评论(0)