容器管理工具Containerd(2)
1. 容器管理:ctr container 用于管理静态容器,ctr task 用于管理容器内任务,ctr run 可一步到位从镜像拉起容器和任务。2. 命名空间管理:使用 ctr namespace 命令,可实现对运行容器的资源隔离,包括查看、创建、删除命名空间,查看命名空间中的进程以及在指定命名空间中下载容器镜像。
容器管理工具Containerd(2)
文章目录
一 Containerd容器管理
1 ctr container
1.1 查看容器
container表示静态容器,
- 可以用c缩写代表container;
- 可以用ls缩写代表list;
# 注意,以下几个命令是等价的
ctr container list
ctr container ls
ctr c list
ctr c ls
1.2 创建容器
# ctr c create 镜像名 容器ID
ctr c create registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 nginx1
# 查看容器
ctr c ls
使用ctr container create
命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。
【说明】
这个 container 对象只是包含了运行一个容器所需的资源及配置的数据结构,例如:namespaces
rootfs
容器的配置
都已经初始化成功了,只是用户进程(本案例为nginx)还没有启动。
需要使用ctr tasks
命令才能获取一个动态容器。
我们在计算机中,线程的创建和运行也是类似的两个阶段。
1.3 查看容器
# 查看容器详细信息
ctr c info nginx1
4 删除容器
ctr container rm 容器名称
2 ctr task
任务(Task)是容器的运行时实例,它代表了容器内正在执行的进程。
2.1 查看任务
# 查看容器所在宿主机进程,是以宿主机进程的方式存在的。
# 可以用t缩写代表task
ctr task ls
ctr t ls
2.2 启动任务(重要)
启动任务的前提:必须现有静态容器
ctr c create 镜像完整名称 容器ID
例如:
ctr c create registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 nginx1
# 启动容器,-d表示daemon,即守护,后台的意思
# 注意,如果不加 -d,会卡住终端
ctr t start -d nginx1
# 查看容器的进程(都是物理机的进程)
ctr t ps nginx1
# 物理机查看到相应的进程
ps -ef | grep 3395
说明:为什么会看到多个进程?
答:主要原因是因为nginx进程管理机制,往往是一个master带了多个worker进程。
涉及到父子进程的概念。
第一列:表示进程用户,如root;
第二列:表示进程号,即Process ID;
第三列:该进程的父进程,即Parent Process ID,这里表示2381是2362创建出来的;
第四列:表示CPU使用率;
2.3 停止任务
# 使用kill命令停止容器中运行的进程,既为停止容器
ctr tasks kill nginx1
# 查看容器停止后状态,STATUS为STOPPED
ctr tasks ls
2.4 删除任务
ctr t rm nginx1
ctr t del nginx1
2.5 暂停任务
# 暂停任务
ctr tasks pause nginx1
2.6 恢复任务
# 使用resume命令恢复任务
ctr tasks resume nginx1
# 再次查看容器状态,看到其状态为PAUSED,表示停止。
ctr tasks ls
2.7 进入容器/任务(重要)
# 为exec进程设定一个id,可以随意输入,只要保证唯一即可,也可使用$RANDOM变量。
# -t 是 --tty 的简写,其作用是为执行的命令分配一个伪终端(TTY)
ctr t exec --exec-id 1 -t nginx1 /bin/sh
# 进入sh之后,执行 ip a 操作
sh-4.4# ip a 查看网卡信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
# 继续执行 curl 127.0.0.1 操作,访问本地提供的web服务
sh-4.4# curl 127.0.0.1
2.4 ctr run
运行一个动态容器(一步到位,镜像 => 静态容器 => 动态容器)
# -d 代表dameon,后台运行
# --net-host 代表容器的IP就是宿主机的IP(相当于docker里的host类型网络)
# 镜像必须已经拉取下来了
# --net-host 是一个完整的参数
ctr run -d --net-host registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 nginx2
进入到容器中
ctr t exec --exec-id 10 -t nginx2 /bin/bash
# 为容器中运行的网站添加网站文件
echo "Hello Nginx" > /usr/share/nginx/html/index.html
exit
在宿主机上访问网站,大家改成自己的虚拟机IP
如:curl 192.168.88.101
二 Containerd命名空间管理
1 ctr namespace
# 列出已有namespace
ctr namespaces ls
ctr namespace ls
ctr ns ls
2 创建命名空间
ctr namespace create itheima
# 或者
ctr ns create itheima
3 删除命名空间
ctr ns rm itheima
4 查看命名空间中的进程
ctr -n itheima tasks ls
5 在指定命名空间中下载容器镜像
ctr -n itheima i pull registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
# 再次查看镜像
ctr -n itheima i ls
更多推荐
所有评论(0)