linux系统创建私有容器仓库和docker容器的资源限制

私有仓库创建和资源限制

  • 创建私有仓库
  • docker资源限制
    • 系统压力测试工具stress
    • cpu资源限制
      • 限制CPU Share
      • 限制CPU核数
      • CPU绑定
    • mem资源限制
    • 限制IO

创建私有仓库

上传harbor压缩包
解压
下载docker-compose
进入解压后的目录
修改配置文件
mv harbor.yml.tmpl  harbor.yml
vim harbor.yml
修改文件中主机名,端口,将https的模块注释

运行install.sh 
浏览器访问ip+端口
默认用户名admin
默认密码Harbor12345
上传镜像,下拉镜像到私有仓库配置访问白名单
vim /etc/docker/daemon.json
"insecure-registries": ["http://10.12.153.250:8888"]

在这里插入图片描述

docker资源限制

在使用 docker 运行容器时,如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平;大的来说,可能会导致主机和集群资源耗尽,服务完全不可用。

CPU 和内存的资源限制已经是比较成熟和易用,能够满足大部分用户的需求。磁盘限制也是不错的,虽然现在无法动态地限制容量,但是限制磁盘读写速度也能应对很多场景。

至于网络,docker 现在并没有给出网络限制的方案,也不会在可见的未来做这件事情,因为目前网络是通过插件来实现的,和容器本身的功能相对独立,不是很容易实现,扩展性也很差。

资源限制一方面可以让我们为容器(应用)设置合理的 CPU、内存等资源,方便管理;另外一方面也能有效地预防恶意的攻击和异常,对容器来说是非常重要的功能。

系统压力测试工具stress

cpu资源限制

限制CPU Share

docker 允许用户为每个容器设置一个数字,代表容器的 CPU share,默认情况下每个容器的 share 是 1024。这个 share 是相对的,本身并不能代表任何确定的意义。当主机上有多个容器运行时,每个容器占用的 CPU 时间比例为它的 share 在总额中的比例。docker 会根据主机上运行的容器和进程动态调整每个容器使用 CPU 的时间比例。
docker run --rm -it progrium/stress --cpu 4   //限制4个进程
docker run --rm -it progrium/stress --cpu 4
docker run --rm -it -c 512 progrium/stress --cpu 4

这两个容器的 CPU 使用率应该大致为 2:1

限制CPU核数

限制容器能使用的 CPU 核数

-c --cpu-shares 参数只能限制容器使用 CPU 的比例,或者说优先级,无法确定地限制容器使用 CPU 的具体核数;从 1.13 版本之后,docker 提供了 --cpus 参数可以限定容器能使用的 CPU 核数。这个功能可以让我们更精确地设置容器 CPU 使用量,是一种更容易理解也因此更常用的手段.
--cpus 后面跟着一个浮点数,代表容器最多使用的核数,可以精确到小数点二位,也就是说容器最小可以使用 0.01 核 CPU。
docker run --rm -it --cpus 1.5 progrium/stress --cpu 3   //限制容器只能使用 1.5 核数 CPU

CPU绑定

docker run --rm -it --cpuset-cpus=0,1 progrium/stress --cpu 2   //只使用cpu1,2来运行这两个线程

mem资源限制

docker 默认没有对容器内存进行限制,容器可以使用主机提供的所有内存。

不限制内存带来的问题:

这是非常危险的事情,如果某个容器运行了恶意的内存消耗软件,或者代码有内存泄露,很可能会导致主机内存耗尽,因此导致服务不可用。可以为每个容器设置内存使用的上限,一旦超过这个上限,容器会被杀死,而不是耗尽主机的内存。 

限制内存带来的问题:

限制内存上限虽然能保护主机,但是也可能会伤害到容器里的服务。如果为服务设置的内存上限太小,会导致服务还在正常工作的时候就被 OOM 杀死;如果设置的过大,会因为调度器算法浪费内存。out of memory

合理做法:

1. 为应用做内存压力测试,理解正常业务需求下使用的内存情况,然后才能进入生产环境使用
2. 一定要限制容器的内存使用上限,尽量保证主机的资源充足,一旦通过监控发现资源不足,就进行扩容或者对容器进行迁移如果可以(内存资源充足的情况)
3. 尽量不要使用 swap,swap 的使用会导致内存计算复杂,对调度器非常不友好

docker 限制容器内存使用量:

docker 启动参数中,和内存限制有关的包括(参数的值一般是内存大小,也就是一个正数,后面跟着内存单位 b、k、m、g,分别对应 bytes、KB、MB、和 GB):

-m --memory:容器能使用的最大内存大小,最小值为 4m

如果限制容器的内存使用为 64M,在申请 64M 资源的情况下,容器运行正常(如果主机上内存非常紧张,并不一定能保证这一点):

docker run --rm -it -m 64m progrium/stress --vm 1 --vm-bytes 64M --vm-hang 0

容器可以正常运行。
-m 64m:限制你这个容器只能使用64M
--vm-bytes 64M:将内存撑到64兆是不会报错,因为我有64兆内存可用。
hang:就是卡在这里。
--vm:生成几个占用内存的进程

而如果申请 150M 内存,会发现容器里的进程被 kill 掉了(worker 6 got signal 9,signal 9 就是 kill 信号)

docker run --rm -it -m 64m progrium/stress --vm 1 --vm-bytes 150M --vm-hang 0

限制IO

限制bps和iops
bps是 byte per second ,每秒读写的数量

iops是 io per second ,每秒IO的次数

注:目前Block I0限额只对direct IO (不使用文件缓存)有效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity3d Shader篇(十四)— 卡通着色

文章目录 前言一、什么是卡通着色?1. 卡通着色原理2. 卡通着色优缺点优点:缺点: 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 卡通轮廓 Pass4. 卡通主 Pass 三、效果四、总结 前言 卡通着色是一种常见的图形渲染效果,它将…

大语言模型:Query Rewriting for Retrieval-Augmented Large Language Models

总体思路 作者首先指出大语言模型虽然取得了很好的效果,但是仍然存在幻觉和时间顺序混乱的问题,因此需要额外知识库和LLM内部知识库相结合,来修正;因此优化传统的retriever-reader的方案成为需要;目前的研究方案当中使…

Nginx的日志怎么看,在哪看,access.log日志内容详解

Nginx 的日志文件通常位于服务器的文件系统中,具体位置可能因配置而异。以下是查看 Nginx 日志的几种方法: 1、查看访问日志:在默认配置下,Nginx 的访问日志文件路径为 /var/log/nginx/access.log。您可以通过命令 sudo cat /var…

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程

【2024】批量查询CSDN文章质量分 写在最前面一、分析获取步骤二、获取文章列表1. 前期准备2. 获取文章的接口3. 接口测试(更新重点) 三、查询质量分1. 前期准备2. 获取文章的接口3. 接口测试 四、python代码实现1. 分步实现2. 批量获取文章信息3. 从exce…

必看 11个AI自动写作神器

AI自动写作神器是当今科技发展中的重大突破,能够以人工智能技术为基础,自动生成高质量的文章。下面将介绍10个AI自动写作神器,看看他们有哪些值得推荐的地方? 一、爱制作ai写作生成器 爱制作AI运用先进的文字生成式AI技术&#xf…

visualvm连接到远程服务

启动命令 java -Dcom.sun.management.jmxremote.rmi.port1232 \ -Dcom.sun.management.jmxremote.port1232 \ -Dcom.sun.management.jmxremote.sslfalse \ -Dcom.sun.management.jmxremote.authenticatefalse \ -jar ${你的jar包名}.jar参数说明 java \ #指定JMX RMI (Re…

2048.神、上帝以及老天爷

典型的错排问题 题解:计算所有人错排的种类数/阶乘 错排种类数: 1——0 2——1 3——2 第一个人两种选择假设1拿了2的,那么2只能拿3,因为2如果拿1,3就会拿3就不会拿错 4——9 3(12) 5——44 f(n)(n-1)*[f(n-1)…

尝试搭建谷粒商城 记录(二)

1、后台管理系统 1.整合renren-fast 在记录(一)中,我们已经基本配置好了一些环境 ,后续有需要再补充吧 下载renren-fast ,把文件夹复制到gulimall文件夹下, 然后修改父pom.xml文件加入这个module 修改renre…

如何使用vscode创建Node.js服务并结合内网穿透实现远程访问本地服务

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

如何在Linux系统部署APITable容器并实现无公网IP远程管理本地数据

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台,是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

优思学院|六西格玛实验设计(DOE)咖啡冲泡案例

在追求完美咖啡口感的过程中,了解不同冲泡参数如何影响最终成品是至关重要的。六西格玛中的实验设计(DOE)是一种强大的统计方法,能帮助我们系统地研究这些参数,并优化我们的冲泡过程。今天,优思学院将通过一…

Springboot中Redis的配置使用

新建 向pom.xml中添加依赖&#xff0c;这个可以不用标注版本号 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 配置yml文件&#xff08;文件名不可以错…

C语言例2-1:从键盘输入两个整数,计算其乘积

代码如下&#xff1a; //从键盘输入两个整数&#xff0c;计算其乘积 #include<stdio.h> int main(void) /*主函数*/ {int n1, n2, result; /*定义保存两个整数及其乘积的变量*/printf("please inp…

畅捷通T+ InitServerInfo.aspx SQL漏洞(2024年3月发布)

漏洞简介 由于畅捷通T的InitServerInfo.aspx接口处未对用户的输入进行过滤和校验&#xff0c;未经身份验证的攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息&#xff08;例如&#xff0c;管理员后台密码、站点的用户个人信息&#xff09;之外&#xff0c;甚至在高权限的情…

LDA 关键词提取

目录 介绍 主题数确认 代码实现 普通关键词提取 TF-IDF&#xff0c;textRank 实现链接&#xff1a;gensim 实现 TF-IDF&#xff1b;textRank 关键词提取_gensim tfidf关键词-CSDN博客 它们是直接从文本中提取关键词&#xff0c;如果想基于一些潜在语义&#xff0c;可以用 L…

从零开始利用MATLAB进行FPGA设计(二)用于HDL代码生成的Simulink模型并用于流水线设计

文章灵感来源于MATLAB官方免费教程&#xff1a;HDL Coder Self-Guided Tutorial 考虑到MATLAB官网的英文看着慢&#xff0c;再加上视频讲解老印浓浓的咖喱味&#xff0c;我决定记录利用MATLAB&Simulink&SystemGenerator进行FPGA数字信号处理的学习过程。 往期回顾&am…

C语言柔性数组详解:让你的程序更灵活

柔性数组 一、前言二、柔性数组的用法三、柔性数组的内存分布四、柔性数组的优势五、总结 一、前言 仔细观察下面的代码&#xff0c;有没有看出哪里不对劲&#xff1f; struct S {int i;double d;char c;int arr[]; };还有另外一种写法&#xff1a; struct S {int i;double …

全球首个 AI 软件工程师 Devin它来了!

如果您想每日获取AI最新新闻,欢迎关注文章底部的公众号 Cognition AI 发布 AI 软件工程师 Devin 初创公司 Cognition 近日发布公告,宣布推出全球首个 AI 软件工程师 Devin,并号称会彻底改变人类构建软件的方式。Devin 擅长长期推理能力,可以自主规划和完成软件项目,并在此…