容器管理工具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

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐