首页 > 系统相关 >CentOS 7.9 安装 containerd(转载)

CentOS 7.9 安装 containerd(转载)

时间:2022-12-21 15:46:06浏览次数:71  
标签:容器 CentOS ctr containerd nginx ls docker 7.9

containerd 安装及使用

containerd 安装

安装 containerd

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install containerd.io

生成默认配置

containerd config default > /etc/containerd/config.toml

配置 systemd cgroup 驱动程序

sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

配置代理(如果需要则配置,默认无需修改)

这步主要是为了 kubeadm 初始化时能从 k8s.gcr.io 拉取镜像。

vim /usr/lib/systemd/system/containerd.service

# 在 [Service] 段添加以下参数
[Service]
Environment="HTTPS_PROXY=http://代理IP:代理端口"
Environment="NO_PROXY=127.0.0.1/8,172.16.0.0/16"

启动

systemctl daemon-reload
systemctl enable containerd --now
systemctl status containerd

containerd 使用

镜像操作

拉取镜像
$ ctr image pull docker.io/library/nginx:alpine
列出本地镜像
$ ctr image ls
REF                            TYPE                                                      DIGEST                                                                  SIZE    PLATFORMS                                                                                LABELS
docker.io/library/nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:bead42240255ae1485653a956ef41c9e458eb077fcb6dc664cbc3aa9701a05ce 9.5 MiB linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x -

$ ctr image ls -q
docker.io/library/nginx:alpine

使用 -q(--quiet) 选项可以只打印镜像名称。

检测本地镜像
$ ctr image check
REF                            TYPE                                                      DIGEST                                                                  STATUS         SIZE            UNPACKED
docker.io/library/nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:bead42240255ae1485653a956ef41c9e458eb077fcb6dc664cbc3aa9701a05ce complete (7/7) 9.5 MiB/9.5 MiB true

主要查看其中的 STATUS,complete 表示镜像是完整可用的状态

重新打标签
$ ctr image tag docker.io/library/nginx:alpine nginx:v1
harbor.k8s.local/course/nginx:alpine

$ ctr image ls -q
docker.io/library/nginx:alpine
nginx:v1
删除镜像
$ ctr image rm harbor.k8s.local/course/nginx:alpine
harbor.k8s.local/course/nginx:alpine

$ ctr image ls -q
docker.io/library/nginx:alpine

加上 --sync 选项可以同步删除镜像和所有相关的资源。

将镜像挂载到主机目录
$ ctr image mount docker.io/library/nginx:alpine /mnt
sha256:c3554b2d61e3c1cffcaba4b4fa7651c644a3354efaafa2f22cb53542f6c600dc
/mnt

$ tree -L 1 /mnt
/mnt
├── bin
├── dev
├── docker-entrypoint.d
├── docker-entrypoint.sh
├── etc
├── home
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

18 directories, 1 file
将镜像从主机目录上卸载
$ ctr image unmount /mnt
/mnt
将镜像导出为压缩包
$ ctr image export --all-platforms nginx.tar.gz docker.io/library/nginx:alpine
从压缩包导入镜像
$ ctr image import nginx.tar.gz

容器操作

创建容器
$ ctr container create docker.io/library/nginx:alpine nginx
列出容器
$ ctr container ls
CONTAINER    IMAGE                             RUNTIME
nginx        docker.io/library/nginx:alpine    io.containerd.runc.v2

同样可以加上 -q 选项精简列表内容

$ ctr container ls -q
nginx
查看容器详细配置

类似于 docker inspect 功能。

$ ctr container info nginx
删除容器
$ ctr container rm nginx

$ ctr container ls
CONTAINER    IMAGE    RUNTIME

除了使用 rm 子命令之外也可以使用 delete 或者 del 删除容器。

任务

通过 container create 命令创建的容器,并没有处于运行状态,只是一个静态的容器。

一个容器真正运行起来是由 Task 任务实现的,Task 可以为容器设置网卡,还可以配置工具来对容器进行监控等。

启动容器
$ ctr task start -d nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
查看正在运行的容器
$ ctr task ls
TASK     PID     STATUS
nginx    3630    RUNNING
进入容器进行操作
$ ctr task exec --exec-id 0 -t nginx sh
/ #

不过这里需要注意必须要指定 --exec-id 参数,这个 id 可以随便写,只要唯一就行。

暂停容器
$ ctr task pause nginx

暂停后容器状态变成了 PAUSED

$ ctr task ls
TASK     PID     STATUS
nginx    3630    PAUSED
恢复容器:
$ ctr task resume nginx

$ ctr task ls
TASK     PID     STATUS
nginx    3630    RUNNING

不过需要注意 ctr 没有 stop 容器的功能,只能暂停或者杀死容器

杀死容器
$ ctr task kill nginx

$ ctr task ls
TASK     PID     STATUS
nginx    3630    STOPPED
删除 Task
$ ctr task rm nginx
$ ctr task ls
TASK    PID    STATUS
获取容器信息

除此之外我们还可以获取容器的 cgroup 相关信息,可以使用 task metrics 命令用来获取容器的内存、CPUPID 的限额与使用量。

# 重新启动容器
$ ctr task metrics nginx
ID             TIMESTAMP                                  
nginx          2022-12-21 07:27:56.869059839 +0000 UTC    

METRIC                   VALUE                  
memory.usage_in_bytes    2121728                
memory.limit_in_bytes    9223372036854771712    
memory.stat.cache        20480                  
cpuacct.usage            67129078               
cpuacct.usage_percpu     [19767213 47361865]    
pids.current             3                      
pids.limit               0  

还可以使用 task ps 命令查看容器中所有进程在宿主机中的 PID

$ ctr task ps nginx
PID     INFO
3984    -
4029    -
4030    -
4031    -
4032    -
4033    -
4034    -
4035    -
4036    -

$ ctr task ls
TASK     PID     STATUS
nginx    3984    RUNNING

其中第一个 PID 3984 就是我们容器中的 1 号进程。

命名空间

另外 Containerd 中也支持命名空间的概念,比如查看命名空间:

$ ctr ns ls
NAME    LABELS
default

如果不指定,ctr 默认使用的是 default 空间。同样也可以使用 ns create 命令创建一个命名空间:

$ ctr ns create test

$ ctr ns ls
NAME    LABELS
default
test

使用 remove 或者 rm 可以删除 namespace

$ ctr ns rm test
test

$ ctr ns ls
NAME    LABELS
default

有了命名空间后就可以在操作资源的时候指定 namespace,比如查看 test 命名空间的镜像,可以在操作命令后面加上 -n test 选项:

$ ctr -n test image ls
REF TYPE DIGEST SIZE PLATFORMS LABELS

Docker 其实也是默认调用的 containerd,事实上 Docker 使用的 containerd 下面的命名空间默认是 moby,而不是 default,所以假如我们有用 docker 启动容器,那么我们也可以通过 ctr -n moby 来定位下面的容器:

$ ctr -n moby container ls

同样 Kubernetes 下使用的 containerd 默认命名空间是 k8s.io,所以我们可以使用 ctr -n k8s.io 来查看 Kubernetes 下面创建的容器。

参考文档

https://www.jianshu.com/p/2d3ea652da9f
https://www.qikqiak.com/k3s/runtime/usage/#使用

标签:容器,CentOS,ctr,containerd,nginx,ls,docker,7.9
From: https://www.cnblogs.com/evescn/p/16996386.html

相关文章

  • Centos7安装Redis(30秒完成)
    Centos7安装Redis1.1安装redis1)下载wget、gcc、gcc-c++命令yum-yinstallwgetgccgcc-c++2)在线下载rediswgethttp://download.redis.io/releases/redis-4.0.11.tar.gz3......
  • 30秒在Centos7安装Nginx(步骤简单)
    Nginx安装1、安装好依赖gcc、gcc-c++、pcre-devel、zlib-devel、openssl、openssl-devel、wgetyum-yinstallgccpcre-develzlib-developensslopenssl-develgcc-c++w......
  • Yum应用场景 之 基于Centos-7 内网yum源服务器同步公网yum源
    内网yum源服务器同步公网yum源​​前言​​​​一、Yum应用场景​​​​二、案例部署​​前言RHEL、Centos系列系统,安装软件需要搭建yum仓库。但是当我们安装某些大多数应用......
  • 在CentOS8中安装gitlab
    安装docker及docker-composecentos8更新源cd/etc/yum.repos.d/sed-i's/mirrorlist/#mirrorlist/g'/etc/yum.repos.d/CentOS-*sed-i's|#baseurl=http://mirro......
  • centos-stream9 查看系统语言
    1、查看当前系统语言命令:echo$LANG英文环境:en_US.UTF-8中文环境:zh_CN.UTF-82、临时修改命令:LANG=“语言环境”3、永久修改需要修改语言文件/etc/locale.conf(1)首先输......
  • VmWare安装Centos后配置net网络
    1:首先安装VmWare2:启动时在安装对应的Linux版本,网络就默认net即可3:都安装好了之后,注意有一个大坑,输入的账号密码都不能准确登录最后发现是linux默认的输入法没有启用电......
  • 王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
      问题7.9:将datasg段中前4个字母变成大写 汇编代码:assumecs:codesg,ss:stacksg,ds:datasgstacksgsegmentdb0,0,0,0,0,0,0,0stacksgendsdatasgsegment......
  • centos-stream中安装nginx遇到的问题一二
    在centos-stream中安装nginx-1.9.15时遇到在make时遇到如下问题:在nginx文件夹里执行make命令报错src/core/ngx_murmurhash.c:37:11:error:thisstatementmayfallt......
  • pyenv环境安装(CentOS)
    1、首选通过pyenv_installer来安装。命令如下:curlhttps://pyenv.run|bash2、如果上述shell安装失败,可以选择手动安装:安装依赖:yuminstallgcczlib-develbzip2bzip2-de......
  • CentOS7基础网络配置
    1、网卡配置vi/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0HWADDR=00:0C:29:6C:BB:E6NM_CONTROLLED="yes"ONBOOT=yesPEERDNS=yesBOOTPROTO=staticIPADDR=192.168......