云原生系列 四【轻松入门容器基础操作】

news2025/2/23 18:09:09

    ✅作者简介:

                        CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云云 享专家博主,掘金后端评审团成员

💕前言:

最近云原生领域热火朝天,那么云原生是什么?何为云原生?云原生用来干什么的?今天学长通过华为的沙箱实验操作带领大家走进“云”时代~~

                           再次渡入繁世,人潮汹涌,眼里茫然,信仰永恒,皆为华夏

img

目录

4. 容器生命周期管理收起

4.1 容器生命周期

4.2 容器资源限额

4.3 退出当前容器,删除本节实验所涉及到的容器

4.4 C组

4.5 退出当前容器,删除本节实验所涉及到的容器

4.6 命名空间

4. 容器生命周期管理收起

4.1 容器生命周期

(1)运行一个centos容器。

                                docker run -d centos
                            

(2)运行另外一个centos容器,并在容器内运行命令保持容器运行状态:

                                docker run -d centos sh -c "while true ; do echo hello world ; sleep 10 ; done"
                            
                                docker container ls
                            

(3)docker attach 进入容器。

注意:请使用第(2)步中的标红框的容器ID替换命令中的【容器ID】,后续都用此ID进行替换。

                                docker attach 容器ID
                            

执行完命令后,可以看到此容器已开始输出“hello world” (4)完成后,在实验室桌面上打开一个新的终端,并参照1.1步骤完成弹性云服务器ECS的登录。 (5)码头工人暂停和码头工人取消暂停:

                                docker pause 容器ID
                            
                                docker container ls
                            

说明:容器状态变更为Paused,并且此容器已停止输出“hello world”。

                                docker unpause 容器ID
                            
                                docker container ls
                            

说明:容器状态恢复正常,在第一个终端可以查看到容器恢复输出“hello world”。 (6)码头工人停止和码头工人启动:

                                docker stop 容器ID
                            
                                docker container ls
                            
                                docker container ls -a
                            

说明:容器状态变更为Exited,并且已经无法在docker container ls命令中查询到该容器,必须配合-a参数才能查询到。

                                docker start 容器ID
                            
                                docker container ls
                            

(7)docker exec进入容器。

                                docker exec -it 容器ID sh
                            

说明:docker exec需要配合-it参数在容器内分配交互式终端,此时需要指明在容器内启动终端类型,常见类型有sh和bash。 可以在容器内完成一些简单的命令操作,最后使用exit命令退出容器。

                                exit
                            

(8)docker cp命令实现宿主机与容器之间的文件拷贝。

                                touch 1.txt
                            
                                docker cp ~/1.txt 容器ID:/home
                            

docker exec进入容器,并验证文件拷贝成功,输入exit退出容器。

                                docker exec -it 容器ID sh
                            
                                cd home
                            
                                ls
                            
                                exit
                            

(9)docker rm删除容器。

                                docker container ls
                            
                                docker stop 容器ID
                            
                                docker rm 容器ID
                            

说明:docker rm删除容器前,需要停止容器,也可通过-f参数强制删除容器。 (10)docker rmi 删除容器镜像。

                                docker pull nginx
                            
                                docker image ls
                            

注意:请使用上一个命令的nginx IMAGE ID替换该下个命令中的【容器镜像ID】。

                                docker rmi 容器镜像ID
                            

说明:如果容器镜像正在被容器使用时没法删除,需要删除所有关联容器之后才可删除容器镜像。

4.2 容器资源限额

①运行一个压力测试容器,实践容器内存分配限额。

                                docker run -it -m 200M progrium/stress --vm 1 --vm-bytes 150M
                            

注意:出现上图,Ctrl+c结束

                                docker run -it -m 200M progrium/stress --vm 1 --vm-bytes 250M
                            

说明:stress是一个集成Linux压测实测工具的容器,可以实现对CPU、memory、IO等资源的压力测试。 (2)运行一个压力测试容器,实践容器内存和swap分配限额。

                                docker run -it -m 300M --memory-swap=400M progrium/stress --vm 2 --vm-bytes 100M
                            

注意:Ctrl+c结束

(3)运行一个压力测试容器,实践容器CPU使用限额。

                                docker run -it --cpus=0.6 progrium/stress --vm 1
                            

运行压力容器后,从实验室桌面再打开一个新的操作终端(参考1.1步骤重新登录弹性云服务器ECS),运行top命令,可以看到该容器的CPU利用率被限制在60%。

                                top
                            

(4)在新终端Ctrl+c后,然后运行压力测试容器,实践容器CPU权重限额。

依次运行三个压力测试容器,让宿主机CPU使用出现竞争。

                                docker run -itd --cpu-shares 2048 progrium/stress --cpu 1
                            
                                docker run -itd --cpu-shares 1024 progrium/stress --cpu 1
                            
                                docker run -itd --cpu-shares 512 progrium/stress --cpu 1
                            

如果在操作终端运行top命令, 可以看到三个容器的CPU利用率满足权重比例。

                                top
                            

注意:后续在此终端上操作,请关闭其他已打开终端!

(5)ctrl+c结束后,运行一个测试容器,实践容器IO限额。

                                docker run -it --device-write-bps /dev/vda:50MB centos
                            

运行测试容器,同时利用-it参数在运行容器同时分配操作终端。在容器内利用dd命令测试磁盘的写能力,可以看到容器内磁盘写入带宽满足IO限额。

                                time dd if=/dev/zero of =test.out bs=1M count=200 oflag=direct
                            

4.3 退出当前容器,删除本节实验所涉及到的容器

                                exit
                            
                                docker container ls
                            

依次删除该步骤涉及到的容器。

                                docker rm 容器ID -f
                            

4.4 C组

(1)运行压力测试容器,验证内存限额cgroup配置。 运行压力测试容器,配置其内存和swap分配限额。

                                docker run -itd -m 300M --memory-swap=400M progrium/stress --vm 2 --vm-bytes 100M
                            
                                docker container ls
                            

按照容器ID,查询cgroup内存子系统验证其内存限额配置。(cgroup内存子系统所在路径为/sys/fs/cgroup/memory/docker/容器长ID/)内存限额配置在memory.limit_in_bytes和memory.memsw.limit_in_bytes文件内。

注意:请使用上图中红框内ID替换命令中的【容器长ID】

                                cd /sys/fs/cgroup/memory/docker/容器长ID/
                            

(2)运行压力测试容器,验证CPU使用限额cgroup配置。

                                docker run -itd --cpus=0.7 progrium/stress --vm 1
                            
                                docker container ls
                            

                                top
                            

按照容器ID,查询cgroup cpu子系统验证其CPU使用限额配置。(cgroup cpu子系统所在路径为/sys/fs/cgroup/cpu/docker/容器长ID/)CPU使用限额配置在cpu.cfs_quota_us和cpu.cfs_period_us文件内。

注意:请使用第2步查询到的容器长ID替换命令中的【容器长ID】

                                cd /sys/fs/cgroup/cpu/docker/容器长ID/
                            

(3)运行压力测试容器,验证CPU权重限额cgroup配置。

                                docker run -itd --cpu-shares 2048 progrium/stress --cpu 1
                            
                                docker run -itd --cpu-shares 1024 progrium/stress --cpu 1
                            
                                docker run -itd --cpu-shares 512 progrium/stress --cpu 1
                            

依次运行三个压力测试容器,让宿主机CPU使用出现竞争,并配置其各自CPU权重。

按照容器ID,查询cgroup cpu子系统验证其CPU权重限额配置。(cgroup cpu子系统所在路径为/sys/fs/cgroup/cpu/docker/容器长ID/)CPU权重限额配置在cpu.shares文件内。

注意:请依次替换容器长ID替换命令中的【容器长ID】

                                cat /sys/fs/cgroup/cpu/docker/容器长ID/cpu.shares
                            

查询三次不同的结果分别显示2048,1024,512。

(4)运行测试容器,验证IO限额cgroup配置。

                                docker run -it --device-write-bps /dev/vda:70MB centos
                            

运行测试容器,配置IO写入带宽限额。按照容器ID,查询cgroup blkio子系统验证其IO写入带宽限额配置。(cgroup blkio子系统所在路径为/sys/fs/cgroup/blkio/)IO写入带宽限额配置在blkio.throttle.write_bps_device文件内。

                                cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device 
                            

说明:此文件内的253:0是/dev/VDA的设备号,可以在宿主机通过lsblk命令查询。

                                lsblk
                            

其中MAJ为主设备号(Major),MIN为次设备号(Minor)。

4.5 退出当前容器,删除本节实验所涉及到的容器

                                exit
                            
                                docker container ls
                            

依次删除该步骤涉及到的容器。

                                docker rm 容器ID -f
                            

4.6 命名空间

(1)UTS Namespace 创建测试容器,分别在容器和宿主机验证主机名。

                                docker run -d -t -h container centos
                            

说明:此处-h参数设置容器主机名。 docker exec进入容器验证容器主机名。

                                docker exec -it 容器ID bash
                            
                                hostname
                            

退出容器,验证宿主机主机名。

                                exit
                            
                                hostname
                            

(2)PID Namespace docker exec命令进入容器验证容器进程信息。

                                docker exec -it 容器ID sh
                            
                                ps
                            

退出容器,验证宿主机进程信息。

                                exit
                            
                                ps -aux
                            

(3)User Namespace 运行测试容器,在容器内创建用户。退出容器,然后在宿主机验证用户名信息。

                                docker run -it centos
                            
                                useradd container
                            
                                su - container
                            

退出容器,在宿主机验证该用户名信息。

                                exit
                            
                                exit
                            
                                su - container
                            

关注博主不迷路,叶秋学长带你上高速~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最详细的Keycloak教程:Keycloak实现手机号、验证码登陆——(一)Keycloak的下载与使用

目录一、 简介二、Keycloak下载与启动三、配置国际化内容一、 简介 接触keycloak已经半个多月了,主要是为了用来集成现已有的项目,也是弄得头大,代码不负脱发人,也是有点小成果了,在这里把自己的这点小小经验分享给大…

CMOS IC功耗类型及其影响因素

目录 概述 开关功耗(Switch Power) 内部功耗(Internal Power) 漏电功耗(Leakage Power) 工艺库相关 开关功率相关信息 内部功耗相关信息 漏电功耗相关信息 例子 概述 该部分对IC功耗的类型进行介绍 先总体来…

安装黑苹果常见问题总结

黑苹果字体模糊? 由于macOS使用了HiDPi技术以达到更高的每英寸像素率,即缩放,因此普通显示器只要不是4k分辨率,安装黑苹果后一定会遇到字体模糊的问题,解决方法可以阅读我往期发布的文章。 为什么用iStat Menus无法检…

期末前端web大作业:用DIV+CSS技术设计的动漫网站——火影忍者6页 带报告

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 网页设计作业 | 动漫网页设计 | 动漫网页设计成品 | 动漫网页设计成品模板 | 简单漫画网页设计成品 | HTML期末大学生网页设计作业 HTML:结…

深度学习第四课——卷积神经网络(week 1)

目录 一、前言 1.1 卷积 1.2 其他滤波器 1.3 Padding 1.3.1 解释 1.3.2 填充多少像素的选择 1.4 卷积步长 1.5 三维卷积 1.6 单层卷积网络 1.7 深度卷积神经网络的一个示例 1.8 池化层 1.8.1 最大池化 1.8.2 平均池化 1.8.3 总结 1.9 卷积神经网络示例 1.10 为…

23种设计模式

1.创建型模式 ① 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性 ② 但是很多场景下,需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但…

leetcode:644. 子数组最大平均数 II【浮点数二分 + 子数组最大平均值技巧】

目录题目截图题目分析ac code总结题目截图 题目分析 枚举铁超时, 10 ** -5考虑二分平均值需要同时考虑总和和长度能否只考虑一个考虑每个数num’ num - avg这样可以忽略长度猜一个guess_avg是否可能达到num’ -> num - avg_guess区间sum(num’) > 0说明其真…

Linux 开机运行sh 脚本 三种方法

一、修改开机启动文件​​​​​​​ /etc/rc.local(或者/etc/rc.d/rc.local) 1、编辑rc.local文件(命令后面让得加&号,表示后台运行) 2、最后修改rc.local文件的执行权限: chmod x /etc/rc.local二…

实践历练的力量

要让你的屁股和椅子建立起深刻的友谊来,要坚持下来。 掌握知识离不开实践和做,只有经历了这样的过程才能将知识转换为自己的。也才能真正明白在什么环境下需要什么样的知识。 解决问题。 真正的学习一定包括实践,而实践是更重要的学习。学…

【sfu】接收侧拼装H264 帧后的回调流程

sfu 基于webrtc协议栈,【sfu】rtc 入口 预先分配了资源,并创建了adpter模块和call模块。【webrtc】rtp包组帧 :涉及到收到rtp包到组帧、传递给Frame处理直到解码器的流程。帧就是从解码器导出的。我们只需要注册1个外部解码器就可以拿到编码后的H264 帧,给到其他流程处理。接…

【JVS低代码开发平台】支持纯手工配置的数据加工、处理、展现的数据仓库

数据智仓英文名称为Smart Data Warehouse,可简写为SDW。数据智仓是JVS整体企业数字化解决方案的核心能力,与JVS的低代码开发套件平级,如下图所示: 数据仓库的目的是构建面向分析的集成化数据环境,为企业提供基于数据的…

SOLIDWORKS 2023新功能揭秘!升级版轻松找到材料明细表修改

SOLIDWORKS 2023版本已经与大家见面,今天众联亿诚继续和大家分享SOLIDWORKS 2023 工程图的亮点新功能之一:材料明细表的覆盖。 材料明细表的覆盖 SOLIDWORKS工程图是我们常用的功能之一。当采用断开链接模式修改材料明细表的内容时,修改的内容…

【强化学习论文合集】AAAI-2022 强化学习论文 | 2022年合集(二)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

【web前端期末大作业】HTML+CSS宠物狗静态网页设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

2.18 小红书的表情文案一键生成,原来这么简单【玩赚小红书】

想知道小红书的表情文案是怎么生成的,比如这种: 情人节走心 高调仪式感浪漫小 机! 式秀恩爱,不如比比谁更走心!❤️ EVERYDAY7️⃣彩⭐期裤 高浓度释放爱意讯号~ 今年情 节,大胆直接的爱意让他抱个 怀&…

【爬虫】Python爬取世界杯球员榜单并保存到excel经验分享

大家好 我是Yhen 今天给大家分享一下 如何爬取卡塔尔世界杯球员榜 数据来源:百度体育 https://tiyu.baidu.com/match/%E4%B8%96%E7%95%8C%E6%9D%AF/tab/%E7%90%83%E5%91%98%E6%A6%9C/current/0 文章目录一.需求分析二.思路分析三.代码实战四.源码获取一.需求分析…

XSS game -xss学习

网址 https://xss-game.appspot.com/level1Level 1: Hello, world of XSS payload: <script> alert(1); </script>漏洞产生处: message "Sorry, no results were found for <b>" query "</b>."Level 2: Persistence is key…

基于 urlimport 进行瘦身,提升编译效率

1. 基于 urlimport 进行瘦身&#xff0c;提升编译效率urlImport 是 NextJS 提供的一个实验特性&#xff0c;支持加载远程 esmodule NextJS 会在本地对所加载的远程模块进行缓存&#xff0c;减少了我们所需构建的模块数&#xff0c;缺点是它会影响 treeShaking 的一个效果&…

【强化学习论文合集】ICLR-2022 强化学习论文 | 2022年合集(四)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

Redis学习(二)之 Redis Cluster集群

redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可用等方面变现一般&#xff0c;特别是…