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…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...