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
id | containerd命令 | docker命令 | 备注 |
---|---|---|---|
1 | ctr image ls | docker images | 获取image信息 |
2 | ctr image pull XX | docker pull XX | 拉取镜像 |
3 | ctr i tag XX YY | docker tag XX YY | 镜像打标签 |
4 | ctr i import XX.tar | docker load < XX.tar.gz | 导入镜像 |
5 | ctr run -d --env 111 pause-test pause | docker run -d --name=pause pause-test | 运行的一个容器 |
6 | ctr task ls | docker ps | 查看运行的容器 |
相关文章:
Docker_docker runContainerd
docker run-Containerd docker run -it 运行容器交互式方式启动守护进程方式启动其他命令 docker部署nginx服务k8s废弃docker原因安装和配置containerdcontainerd常用命令 docker run -it 运行容器 交互式方式启动 # 以交互式方式启动并进入容器 docker run --namehello -it …...
python中常见的矩阵变换总结
利用python做数据处理和分析过程中,如在开展机器学习的数据预处理、数据格式转换等等,不可避免的会涉及到各种矩阵变换,其中使用最多的就是numpy下的矩阵变换,以下是日常用到的一些矩阵变换总结,主要有矩阵中数据类型的…...

LightningChart JS 2023Crack,CPU高效实时更新
LightningChart JS 2023Crack,CPU高效实时更新 添加了新的极地热图图表类型-添加了新系列类型,允许您在极地坐标系中可视化热图。极地热图的一些关键特征是: 处理多达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应用程序 初始使用: 一开始我们是新账户,里面是没有仓库的,需要手动创建一个仓库。此时,这个仓库是创建在本地仓库里面,需要用到push命令(就是那个pub…...

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

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

JavaScript、TypeScript、ES5、ES6之间的联系和区别
ECMAScript: 一个由 ECMA International 进行标准化,TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript: ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范,并且可能被用于…...

RCNA——单臂路由
一,实验背景 之前的VLAN实现的很多都是相同部门互相访问,不同部门无法访问。不过这次整来了一个路由器,领导说大部分的部门虽说有保密信息需要互相隔离,但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…...
leetcode做题笔记69
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 思路一ÿ…...
CentOS根分区扩容实战(非LVM)!
在虚拟化平台(如KVM,ESXI)中,将虚拟机的磁盘大小扩展到所需的大小。这将增加虚拟机的磁盘空间。 在虚拟机中,使用以下命令查看可用的磁盘和分区信息: sudo fdisk -l确定要扩展的根分区的设备名称(如 /dev/…...

uniapp 微信小程序 分包
1、manifest.json内添加如图所示: "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如: {"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:HashMap 的数据结构? A:哈希表结构(链表散列:数组链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table; 2:…...

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

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

JAVA设计模式----原型设计模式
文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…...
树·c++
树(Tree) 是一种非线性的数据结构,它由若干个 节点(Node) 组成,并通过 边(Edge) 相互连接。树的结构类似于现实中的树,其中 根节点(Root Node) 位…...

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

如何配置mvn镜像源为华为云
如何配置mvn镜像源为华为云 # 查找mvn 配置文件 mvn -X help:effective-settings | grep settings.xml# 配置mvn镜像源为华为云,/home/apache-maven-3.9.5/conf/settings.xml文件路径需要根据上一步中查询结果调整 cat > /home/apache-maven-3.9.5/conf/setting…...

前端八股之Vue
目录 有使用过vue吗?说说你对vue的理解 你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢 一、SPA 是什么 二、SPA 和 MPA 的区别 三、SPA 的优缺点 四、实现 SPA 五、给 SPA 做 SEO 的方式(基于 Vueÿ…...

Attention Is All You Need (Transformer) 以及Transformer pytorch实现
参考https://zhuanlan.zhihu.com/p/569527564 Attention Is All You Need (Transformer) 是当今深度学习初学者必读的一篇论文。 一. Attention Is All You Need (Transformer) 论文精读 1. 知识准备 机器翻译,就是将某种语言的一段文字翻译成另一段文字。 由…...
Cookie 和 Session:Web 身份验证的核心机制
文章目录 一、Cookie:客户端存储的小数据块**核心特性****典型应用场景**二、Session:服务器端的会话存储**核心特性****典型应用场景**三、Cookie vs Session:核心区别对比四、最佳实践与扩展 一、Cookie:客户端存储的小数据块 …...
科普:Linux `su` 切换用户后出现 `$` 提示符,如何排查和解决?
科普:Linux su 切换用户后出现 $ 提示符,如何排查和解决? 在 Linux 系统管理中,su(Switch User)命令用于切换用户身份。正常情况下,从 root 切换到普通用户时,提示符会从 # 变成 $&…...

Qt 读取和写入 INI 格式的配置文件
Qt 读取和写入 INI 格式的配置文件 前言:INI 配置文件在 Qt 开发中的重要性基础夯实:INI 文件结构与 QSettings 核心概念1. INI 文件的基本结构2. QSettings 类概述3. 初始化 QSettings 对象4. 基本读写操作5. 高级操作技巧5.1 处理数组和列表5.2 检查键…...
快速掌握 GO 之 RabbitMQ 结合 gin+gorm 案例
更多个人笔记见: (注意点击“继续”,而不是“发现新项目”) github个人笔记仓库 https://github.com/ZHLOVEYY/IT_note gitee 个人笔记仓库 https://gitee.com/harryhack/it_note 个人学习,学习过程中还会不断补充&…...

WEBSTORM前端 —— 第3章:移动 Web —— 第4节:移动适配-VM
目录 一、适配方案 二、VM布局 编辑 三、vh布局 四、案例—酷我音乐 一、适配方案 二、VM布局 三、vh布局 四、案例—酷我音乐...
ubuntu/windows系统下如何让.desktop/.exe文件 在开机的时候自动运行
目录 1,让 .desktop 文件在 Ubuntu 开机时自动启动 1.1 创建 autostart 目录(如果不存在) 1.2 将 .desktop 文件复制到 autostart 目录 1.3 确保 .desktop 文件有可执行权限 2,windows 2.1 打开「启动」文件夹: 2.2 将 .exe 或快捷方…...
游戏盾与高防CDN的协同防御策略分析
游戏盾与高防CDN的协同防御策略可以从技术互补性、分层防护机制、动态流量调度等角度展开分析,以下为核心要点: 1. 分层防御架构:流量分层过滤 高防CDN边缘层:利用全球分布的边缘节点作为“第一道防线”…...