当前位置: 首页 > news >正文

Docker_docker runContainerd

docker run-Containerd

  • docker run -it 运行容器
    • 交互式方式启动
    • 守护进程方式启动
    • 其他命令
  • docker部署nginx服务
  • k8s废弃docker原因
  • 安装和配置containerd
  • containerd常用命令

docker run -it 运行容器

交互式方式启动

# 以交互式方式启动并进入容器
docker run --name=hello -it centos /bin/bash 
# 输入exit,退出容器,退出之后容器也会停止,不会再前台运行
  • docker run运行并创建容器
    –name 容器的名字
    -i 交互式
    -t 分配伪终端
    centos: 启动docker需要的镜像
    /bin/bash说明你的shell类型为bash,bash shell是最常用的一种shell, 是大多数Linux发行版默认的shell。 此外还有C shell等其它shell。

守护进程方式启动

 docker run --name=hello1 -td centos 

-d在后台运行docker

docker exec -it hello1 /bin/bash 

其他命令

docker ps     # 查看正在运行的容器
docker ps -a  # 查看所有容器,包括运行和退出的容器 
docker stop hello1  # 停止容器 
docker start hello1 # 启动已经停止的容器
docker exec -it hello1 /bin/bash  # 进入容器 
docker rm -f hello1 # 删除容器 
docker --help # 查看docker帮助命令

docker部署nginx服务

基于centos镜像运行容器,在容器里面安装nginx服务。

# 1、运行容器
docker run --name nginx -p  80 -itd centos 
# 2、进入容器 
docker exec -it nginx /bin/bash
# 3、查看容器的id
ip addr
# 4、yum安装nginx
rm -rf /etc/yum.repos.d/* 
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-
8.5.2111.repo 
yum install wget -y 
yum install nginx -y  
# 5、安装文本编辑器vim 
yum install vim-enhanced -y 
# 6、创建静态页面 
mkdir /var/www/html -p 
cd /var/www/html/ 
cat index.html 
<html> <head> <title>nginx in docker</title> </head> <body> <h1>hello,My Name is xianchao</h1> </body> 
</html> 
# 7、修改nginx配置文件中的root路径,如下 
vim /etc/nginx/nginx.conf 
root         /var/www/html/; 
# 8、查看容器(能查看到nginx容器在物理机映射的端口是49153 )
[root@xianchaomaster1 ~]# docker ps | grep nginx 
ecfa046e9681   centos                                              "/bin/bash"              
12 minutes ago   Up 12 minutes   0.0.0.0:49153->80/tcp, :::49153->80/tcp   nginx  
# 9、直接访问curl http://192.168.40.180:49153 

流量走向:
访问物理节点ip:port(容器在物理节点映射的端口)–→容器ip:port(容器里部署的服务的端口)-> 就可以访问到容器里部署的应用了

k8s废弃docker原因

  • Containerd 和 Docker 之间的关系
    Docker 包含 Containerd,Containerd 专注于运行时的容器管理,而 Docker 除了容器管理之外,还可以完成镜像构建之类的功能。
    Containerd 提供的 API 偏底层,不是给普通用户直接用的,容器编排的开发者才需要Containerd。

  • Containerd 在容器生态中扮演的角色
    Containerd 并不是直接面向最终用户的,而是主要用于集成到更上层的系统里,比如 Kubernetes 等容器编排系统。
    Containerd 以 daemon 的形式运行在系统上,通过 unix domain socket 暴露底层的 grpc API,上层系统可以通过这些 API 管理机器上的容器。

  • 废弃原因
    Docker,Kubernetes 等工具来运行一个容器时会调用容器运行时(CRI),比如 containerd,CRIO,通过容器运行时来完成容器的创建、运行、销毁等实际工作,Docker 使用的是 containerd 作为其运行时;Kubernetes 支持 docker(在 k8s1.24 版本之前用,1.24 开始废弃了)、containerd, CRI-O 等多种容器运行时,这些容器运行时都遵循了 OCI 规范,并通过 runc 来实现与操作系统内核交互来完成容器的创建和运行

CRI
CRI 是一个插件接口,它使 kubelet 能够使用各种容器运行时,你需要在集群中的每个节点上都有一个可以正常工作的容器运行时, 这样 kubelet 能启动 Pod 及其容器。容器运行时接口(CRI)是 kubelet 和容器运行时之间通信的主要协议。

1、如果你使用 Docker 作为 K8S 容器运行时的话,kubelet 需要先要通过 dockershim 去调用 Docker,再通过 Docker 去调用 containerd。
2、如果你使用 containerd 作为 K8S 容器运行时的话, kubelet 可以直接调用 containerd。
3、使用 containerd 不仅性能提高了(调用链变短了),而且资源占用也会变小(Docker 不是一个纯粹的容器运行时,具有大量其他功能)。
4、调用链分析
Docker 作为 k8s 容器运行时,调用关系如下:
kubelet --> docker shim (在 kubelet 进程中) --> dockerd --> containerd
Containerd 作为 k8s 容器运行时,调用关系如下:
kubelet --> cri plugin(在 containerd 进程中) --> containerd

安装和配置containerd

安装 docker 会自动把 containerd 安装出来,也可以通过如下命令直接安装 containerd。

需要配置 docker-ce.repo 这个 yum 源:

[root@xianchaomaster1 ~]#yum install yum-utils -y 
[root@xianchaomaster1 ~]#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@xianchaomaster1 ~]# yum install   containerd  -y 
[root@xianchaomaster1 ~]# systemctl enable containerd 
[root@xianchaomaster1 ~]# systemctl start containerd 

初始化Containerd配置

[root@xianchaomaster1 ~]# containerd config default > /etc/containerd/config.toml 
[root@xianchaomaster1 ~]# systemctl enable containerd 
[root@xianchaomaster1 ~]# systemctl start containerd # 替换 containerd 默认的 sand_box 镜像,编辑/etc/containerd/config.toml 文件: 
sandbox_image = "k8s.gcr.io/pause:3.2" 
替换成 
registry.cnhangzhou.aliyuncs.com/google_containers/pause-amd64:3.2 
应用配置并重新运行 containerd 服务 
[root@xianchaomaster1 ~]# systemctl daemon-reload 
[root@xianchaomaster1 ~]# systemctl restart containerd 
[root@xianchaomaster1 ~]# systemctl status  containerd containerd.service - containerd container runtime Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: 
disabled) Active: active (running) since Tue 2021-04-20 21:10:45 CST; 8s ago 

可以先将这个镜像拉下来

[root@xianchaomaster1 ~]# ctr images pull registry.cnhangzhou.aliyuncs.com/google_containers/pause-amd64:3.2 

containerd常用命令

#查看 containerd 命名空间
ctr namespace ls 
#查看默认名称空间镜像有哪些 
ctr image ls
#查看 k8s 命名空间下的镜像 
ctr -n=k8s.io images ls
#拉取 busybox 镜像 
ctr image  pull docker.io/library/busybox:latest 
#注:必须全路径,从 dockerhub 上下载默认 busybox 镜像。 ctr images rm 删除镜像 
ctr --help # 压缩镜像 
ctr images pull docker.io/library/mysql:latest 
ctr images export mysql.tar.gz docker.io/library/mysql:latest 
# 导出镜像 
ctr images import mysql.tar.gz 
# 删除镜像
ctr i rm docker.io/library/busyboxv:1

docker 的镜像和 containerd 镜像通用吗?
答:通用的,docker save -o 生成的镜像文件,可以基于 ctr images import 导出来

# 运行容器(先创建task再运行容器)
ctr run -d  docker.io/library/busybox:latest busybox-v1
# 查看容器
ctr c ls
# 查看task
ctr task ls  # 在containerd中task才是真正跑容器的
# 进入容器
ctr task exec --exec-id 3118 -t busybox-v1 sh
# 删除容器
ctr task rm -f busybox-v1
ctr c ls
ctr c rm busybox-v1 
# 给镜像打标签(如果v1版本存在的话,可以加上--force可以强制替换)
ctr i tag docker.io/library/busybox:latest   docker.io/library/busybox:v1
# 删除容器
ctr task kill --signal 9 busybox-v1 # 停止task
ctr c del busybox-v1 
ctr c ls
ctr tsak ls
idcontainerd命令docker命令备注
1ctr image lsdocker images获取image信息
2ctr image pull XXdocker pull XX拉取镜像
3ctr i tag XX YYdocker tag XX YY镜像打标签
4ctr i import XX.tardocker load < XX.tar.gz导入镜像
5ctr run -d --env 111 pause-test pausedocker run -d --name=pause pause-test运行的一个容器
6ctr task lsdocker ps查看运行的容器

相关文章:

Docker_docker runContainerd

docker run-Containerd docker run -it 运行容器交互式方式启动守护进程方式启动其他命令 docker部署nginx服务k8s废弃docker原因安装和配置containerdcontainerd常用命令 docker run -it 运行容器 交互式方式启动 # 以交互式方式启动并进入容器 docker run --namehello -it …...

python中常见的矩阵变换总结

利用python做数据处理和分析过程中&#xff0c;如在开展机器学习的数据预处理、数据格式转换等等&#xff0c;不可避免的会涉及到各种矩阵变换&#xff0c;其中使用最多的就是numpy下的矩阵变换&#xff0c;以下是日常用到的一些矩阵变换总结&#xff0c;主要有矩阵中数据类型的…...

LightningChart JS 2023Crack,CPU高效实时更新

LightningChart JS 2023Crack,CPU高效实时更新 添加了新的极地热图图表类型-添加了新系列类型&#xff0c;允许您在极地坐标系中可视化热图。极地热图的一些关键特征是&#xff1a; 处理多达400万个数据点。 快速加载速度和CPU高效实时更新。 100ms以完全显示由所有数据填充的热…...

hutool 导出复杂表头excel

假如已这样的表头导出数据 1.把包含表头的excel添加到项目资源目录 2.编写代码读取表头所在sheet,并且加入需导出的数据 /*** 导出excel*/public static void downloadExcel(List<List<Object>> list, HttpServletResponse response) throws IOException {/*Strin…...

git和github学习

一、什么是git和github? 二、学会使用github desktop应用程序 初始使用&#xff1a; 一开始我们是新账户&#xff0c;里面是没有仓库的&#xff0c;需要手动创建一个仓库。此时&#xff0c;这个仓库是创建在本地仓库里面&#xff0c;需要用到push命令&#xff08;就是那个pub…...

竞赛项目 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …...

中文版开源Llama 2同时有了语言、多模态大模型,完全可商用

可以说&#xff0c;AI 初创公司 LinkSoul.Al 的这些开源项目让海外开源大模型在国内的普及和推广速度与国际几乎保持了一致。 7 月 19 日&#xff0c;Meta 终于发布了免费可商用版本 Llama 2&#xff0c;让开源大模型领域的格局发生了巨大变化。 Llama 2 模型系列包含 70 亿、…...

JavaScript、TypeScript、ES5、ES6之间的联系和区别

ECMAScript&#xff1a; 一个由 ECMA International 进行标准化&#xff0c;TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript&#xff1a; ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范&#xff0c;并且可能被用于…...

RCNA——单臂路由

一&#xff0c;实验背景 之前的VLAN实现的很多都是相同部门互相访问&#xff0c;不同部门无法访问。不过这次整来了一个路由器&#xff0c;领导说大部分的部门虽说有保密信息需要互相隔离&#xff0c;但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…...

leetcode做题笔记69

给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 思路一&#xff…...

CentOS根分区扩容实战(非LVM)!

在虚拟化平台&#xff08;如KVM,ESXI&#xff09;中&#xff0c;将虚拟机的磁盘大小扩展到所需的大小。这将增加虚拟机的磁盘空间。 在虚拟机中&#xff0c;使用以下命令查看可用的磁盘和分区信息&#xff1a; sudo fdisk -l确定要扩展的根分区的设备名称&#xff08;如 /dev/…...

uniapp 微信小程序 分包

1、manifest.json内添加如图所示&#xff1a; "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如&#xff1a; {"path" : &qu…...

Redis_安装、启动以及基本命令

2.Redis安装 2.1前置处理环境 VMware安装安装centOS的linux操作系统xshellxftp 2.2 配置虚拟机网络 按ctrlaltf2 切换到命令行 cd (/)目录 修改/etc/sysconfig/network-scripts/ifcfg-ens3 vi 命令 按insert表示插入 按ctrlesc退出修改状态 :wq 写入并退出 此文件必须保持一…...

IPv4编址及子网划分

IPv4编址及子网划分 一、IPv4地址概述1.1、IPv4报文结构1.2、IPv4地址分类1.2.1、A类1.2.2、B类1.2.3、C类1.2.4、D类1.2.5、E类 1.3、私有IP地址1.4、特殊地址 二、子网划分2.1、子网掩码2.2、VLSM 可变长的子网掩码2.3、子网划分2.4、子网划分示例2.4.1、子网划分案例 —— A…...

HashMap 二十一问

1&#xff1a;HashMap 的数据结构&#xff1f; A&#xff1a;哈希表结构&#xff08;链表散列&#xff1a;数组链表&#xff09;实现&#xff0c;结合数组和链表的优点。当链表长度超过 8 时&#xff0c;链表转换为红黑树。transient Node<K,V>[] table; 2&#xff1a;…...

什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium&#xff1f;   Selenium 是一种开源工具&#xff0c;用于在 Web 浏览器上执行自动化测试&#xff08;使用任何 Web 浏览器进行 Web 应用程序测试&#xff09;。   等等&#xff0c;先别激动&#xff0c;让我再次重申一下&#xff0c;Selenium 仅可以测试We…...

解决“先commit再pull”造成的git冲突

一、问题场景 在分支上修改了代码然后commit&#xff08;没有push&#xff09;&#xff0c;此时再git pull&#xff0c;拉下了别人的修改&#xff0c;但是报错无法merge 二、解决步骤 1.在idea下方工具栏选择git -> log&#xff0c;可以看到版本变化链表&#xff0c;右键…...

JAVA设计模式----原型设计模式

文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…...

树·c++

树&#xff08;Tree&#xff09; 是一种非线性的数据结构&#xff0c;它由若干个 节点&#xff08;Node&#xff09; 组成&#xff0c;并通过 边&#xff08;Edge&#xff09; 相互连接。树的结构类似于现实中的树&#xff0c;其中 根节点&#xff08;Root Node&#xff09; 位…...

vuejs 设计与实现 - 双端diff算法

我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性&#xff0c;尽可能地复用 DOM元素&#xff0c;并通过移动 DOM的方式来完成更新&#xff0c;从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是&#xff0c;简单 Diff 算法仍然存在很多缺陷&a…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...