hincky的主页 hincky的主页
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 容器技术

    • docker

    • k8s

    • helm

    • rancher

    • prometheus

    • grafana

    • containerd

      • 容器管理工具 Containerd
        • 1.0 前言
        • 1.1 Containerd前世今生
        • 1.2 Containerd架构
          • 1.2.1 架构图
          • 1.2.2 常用插件
          • 1.2.3 架构缩略图
          • 1.2.4 与其它容器运行时工具性能对比
      • 安装containerd
        • 2.1 YUM方式安装
          • 2.1.1 获取YUM源
          • 2.1.2 使用yum命令安装
          • 2.1.3 验证安装及启动服务
          • 2.1.4 验证可用性
        • 2.2 二进制方式安装
          • 2.2.1 获取安装包
          • 2.2.2 安装并测试可用性
          • 2.2.2.1 安装containerd
          • 2.2.2.2 查看containerd安装位置
          • 2.2.2.3 复制containerd运行时文件至系统
          • 2.2.2.4 添加containerd.service文件至系统
          • 2.2.2.5 查看containerd使用帮助
          • 2.2.2.6 生成containerd模块配置文件
          • 2.2.2.6.1 生成默认模块配置文件
          • 2.2.2.6.2 替换默认配置文件
          • 2.2.2.7 启动containerd服务并设置开机自启动
          • 2.2.2.8 复制ctr命令至系统
          • 2.2.2.9 查看已安装containerd服务版本
          • 2.2.2.10 安装runC
          • 2.2.2.10.1 获取runC
          • 2.2.2.10.2 安装runC并验证安装结果
      • 镜像管理
        • 3.1 Containerd容器镜像管理命令
        • 3.2 查看镜像
        • 3.3 下载镜像
        • 3.4 镜像挂载
        • 3.5 镜像导出
        • 3.6 镜像删除
        • 3.7 镜像导入
        • 3.8 修改镜像tag
      • 容器管理
        • 4.1 获取命令帮助
          • 4.1.1 获取ctr命令帮助
          • 4.1.2 获取创建静态容器命令帮助
          • 4.1.3 获取动态容器命令帮助
        • 4.2 查看容器
        • 4.3 查看任务
        • 4.4 创建静态容器
        • 4.5 静态容器启动为动态容器
        • 4.6 进入容器操作
        • 4.7 直接运行一个动态容器
        • 4.8 暂停容器
        • 4.9 恢复容器
        • 4.10 停止容器
        • 4.11 删除容器
      • 私有镜像仓库harbor
        • 5.1 Harbor准备
        • 5.2 配置Containerd使用Harbor仓库
          • 5.2.1 Harbor主机名解析
          • 5.2.2 修改Containerd配置文件
          • 5.2.3 ctr下载镜像
          • 5.2.4 ctr上传镜像
      • 命名空间管理
        • 查看帮助
        • ns操作
          • 查看
          • 创建
          • 删除
        • 查看用户进程
        • 查看镜像
        • 创建静态容器
          • 查看容器
        • 与其它Containerd容器共享命名空间
      • 网络管理
        • 7.1 创建CNI网络
          • 7.1.1 获取CNI工具源码
          • 7.1.2 获取CNI Plugins(CNI插件)
          • 7.1.3 准备CNI网络配置文件
          • 7.1.4 生成CNI网络
        • 7.2 为Containerd容器配置网络功能
          • 7.2.1 创建一个容器
          • 7.2.2 进入容器查看其网络情况
          • 7.2.3 获取容器进程ID及其网络命名空间
          • 7.2.4 为指定容器添加网络配置
      • 持久化存储
        • 利用静态容器实现
        • 验证
      • docker集成containerd容器管理
        • 安装docker相关组件
        • 修改docker服务文件
    • jenkins

  • 命令集合

  • 软路由

  • 容量保障技术

  • 运维
  • 容器技术
  • containerd
hincky
2022-11-12
目录

docker集成containerd容器管理

目前Containerd主要任务还在于解决容器运行时的问题,对于其周边生态还不完善,所以可以借助Docker结合Containerd来实现Docker完整的功能应用。

# 安装docker相关组件

准备Docker安装YUM源
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1
2
安装Docker-ce
# yum -y install docker-ce
1
2

# 修改docker服务文件

修改Docker服务文件,以便使用已安装的containerd。
# vim /etc/systemd/system/multi-user.target.wants/docker.service

# 修改前:
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 此处
ExecReload=/bin/kill -s HUP $MAINPID

# 修改后:

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --containerd  /run/containerd/containerd.sock --debug 此处
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
设置docker daemon启动并设置其开机自启动
# systemctl daemon-reload
# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# systemctl start docker
1
2
3
4
5
查看其启动后进程
# ps aux | grep docker
root      16270  0.0  3.1 1155116 63320 ?       Ssl  12:09   0:00 /usr/bin/dockerd --containerd /run/containerd/containerd.sock --debug
1
2
3
使用docker运行容器
# docker run -d nginx:latest
......
219a9c6727bcd162d0a4868746c513a277276a110f47e15368b4229988003c13
1
2
3
4
使用docker ps命令查看正在运行的容器
# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
219a9c6727bc   nginx:latest   "/docker-entrypoint.…"   14 seconds ago   Up 13 seconds   80/tcp    happy_tu
1
2
3
4
使用ctr查看是否添加一个新的namespace,本案例中发现添加一个moby命名空间,即为docker使用的命名空间。
# ctr namespace ls
NAME    LABELS
default
k8s.io
kubemsb
moby
1
2
3
4
5
6
7
查看moby命名空间,发现使用docker run运行的容器包含在其中。
# ctr -n moby container ls
CONTAINER                                                           IMAGE    RUNTIME
219a9c6727bcd162d0a4868746c513a277276a110f47e15368b4229988003c13    -        io.containerd.runc.v2
1
2
3
4
使用ctr能够查看到一个正在运行的容器,既表示docker run运行的容器是被containerd管理的。
# ctr -n moby tasks ls
TASK                                                                PID      STATUS
219a9c6727bcd162d0a4868746c513a277276a110f47e15368b4229988003c13    16719    RUNNING
1
2
3
4
使用docker stop停止且使用docker rm删除容器后再观察,发现容器被删除。
# docker stop 219;docker rm 219
219
219

# ctr -n moby container ls
CONTAINER    IMAGE    RUNTIME

# ctr -n moby tasks ls
TASK    PID    STATUS
1
2
3
4
5
6
7
8
9
10
编辑 (opens new window)
#containerd
持久化存储
jenkins介绍

← 持久化存储 jenkins介绍→

最近更新
01
人生前期重要的能力
05-17
02
防火墙命令
04-11
03
docker-compose部署mysql主从集群
03-22
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式