Docker 配置基础优化

Docker Containers

Author:rab


为什么要优化?

你有没有发现,Docker 作为线上环境使用时,Docker 日志驱动程序的日志、存储驱动数据都比较大(尤其是在你容器需要增删比较频繁的时候),动不动就好几百 G 的大小,因此我们需要合理的配置一下 Docker 的配置文件。接下来是一个 Overlay2 文件系统常用的配置基础优化,可根据你的实际情况来进行调整,但要注意的是不同的 Docker 版本可能配置文件选项有所细微区别,具体可查看官方文档。

cat /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://q1rw9tzz.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"],"insecure-registries":["http://xxx.xxx.xxx"],"data-root": "/data/docker","storage-driver": "overlay2","storage-opts": ["overlay2.size=50GB","overlay2.override_kernel_check=true","overlay2.override_wait_for_deletion=true"],"log-driver": "json-file","log-opts": {"max-size": "50MB","max-file": "3"}
}

修改保存完成后,需要重启 Docker 服务使配置生效:

systemctl daemon-reload 
systemctl restart docker

字段解释:

  • exec-opts

    指定 Docker 使用 systemd 作为 cgroup 驱动程序。这是为了确保 Docker 在容器的资源控制方面与宿主系统的 systemd 一致。

  • registry-mirrors

    配置 Docker 镜像仓库镜像源,可以指定多个镜像源地址(避免单个可能会失效的问题),以加速从这些镜像源下载 Docker 镜像。

  • insecure-registries

    配置 Docker 的私有镜像仓库镜像源,该仓库一般是我们私有化部署或使用的云产品服务。

  • data-root

    指定 Docker 的数据目录,存储驱动、日志驱动等数据都会存储在该目录下。

  • storage-driver

    指定 Docker 的存储驱动为 overlay2,不指定默认也是 overlay2。

  • storage-opts

    设置 Docker 存储驱动的选项,overlay2.override_kernel_check=true 表示允许覆盖内核版本检查,以便在不同内核版本之间切换 overlay2 存储驱动。overlay2.override_wait_for_deletion=true c=表示覆盖等待删除操作,提高容器删除速度。overlay2.size=50GB 表示限制存储驱动的容量大小为 50GB,但是我不建议限制其大小,如果在生产环境中你限制的大小太小可能会导致容器中的应用程序无法正常工作或崩溃,如果存储驱动的大小限制不足以容纳容器中的数据,那么超出限制的数据可能会丢失,这可能会导致重要数据的损失,因此需要根据你的具体需求和应用场景来谨慎考虑。确保你了解应用程序的存储需求,并根据实际情况来设置存储驱动大小限制。同时,要定期监控存储空间的使用情况,以确保不会出现不可预测的问题。

  • log-driver

    指定 Docker 容器的日志驱动程序为 json-file,表示容器日志将以 JSON 格式写入文件。

  • log-opts

    设置 Docker 日志驱动的选项,max-size 表示限制单个容器日志文件的最大大小为 50MB。max-file表示最多保留 3 个容器日志文件,旧的日志文件会被轮换出去。

小结

其实这并算不上实际意义上的优化,我们只需要关注以下几个方面的配置,其他默认即可(默认参数配置已经完全可应对生产了)。

  • 存储驱动(storage-driver):默认情况下,Docker 使用 overlay2 存储驱动,这对大多数用例都是合适的。

  • 数据根目录(data-root):这是 Docker 用于存储容器镜像、容器数据和卷的根目录。如果你的系统有足够的存储空间,使用默认的数据根目录通常是合适的。但如果你想将 Docker 数据存储在不同的位置,可以根据需求修改此选项。

  • 日志驱动(log-driver):默认情况下,Docker 使用 json-file 日志驱动,将容器日志以 JSON 格式写入文件。这个设置通常适用于大多数用例,但你可以根据需求选择其他日志驱动程序,如 syslog 或 fluentd。

  • 日志选项(log-opts):根据日志需求,可以设置不同的选项。例如,你可以使用 "max-size""max-file" 选项来限制单个日志文件的大小和文件的数量。这有助于控制日志文件的大小和数量,以免耗尽磁盘空间。

  • 镜像仓库镜像源(registry-mirrors):如果你需要加速 Docker 镜像的下载速度,可以配置国内镜像仓库的镜像源(如阿里)。

  • 不安全的镜像仓库(insecure-registries):如果你需要连接到不安全的 Docker 镜像仓库(其实就是我们自建的私有 Docker 镜像仓库),可以在这里添加这些仓库的地址。

—END

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个.NET开发的开源跨平台二维码生成库

虽然已经有很多生成二维码的解决方案,但是它们大多依赖System.Drawing,而.NET 6开始,使用System.Drawing操作图片,在生成解决方案或打包时,会收到一条警告,大致意思是System.Drawing仅在 ‘windows’ 上受支…

凉鞋的 Godot 笔记 106. 第二轮循环2D 场景视图Label

从这一篇开始,我们开始进行第二轮循环。 这次我们至少能够在游戏运行窗口能看到一些东西。 首先还是在场景窗口进行编辑,先创建一个节点: 在弹出的窗口,我们找到 Control/Label ,如下所示: 点击创建,然后我们在 2D 的…

提升您的 Go 应用性能的 6 种方法

优化您的 Go 应用程序 1. 如果您的应用程序在 Kubernetes 中运行,请自动设置 GOMAXPROCS 以匹配 Linux 容器的 CPU 配额 Go 调度器 可以具有与运行设备的核心数量一样多的线程。由于我们的应用程序在 Kubernetes 环境中的节点上运行,当我们的 Go 应用程…

全能视频工具 VideoProc Converter 4K for mac中文

VideoProc 4K提供快速完备的4K影片处理方案,您可以透过这款软体调节输出影片格式和大小。能够有效压缩HD/4K影片体积90%以上,以便更好更快地上传到YouTube,或是通过电子邮件附件发送。业界领先的视讯压缩引擎,让你轻松处理大体积视…

计算机网络 快速了解网络层次、常用协议、常见物理设备。 掌握程序员必备网络基础知识!!!

文章目录 0 引言1 基础知识的定义1.1 计算机网络层次1.2 网络供应商 ISP1.3 猫、路由器、交换机1.4 IP协议1.5 TCP、UDP协议1.6 HTTP、HTTPS、FTP协议1.7 Web、Web浏览器、Web服务器1.8 以太网和WLAN1.9 Socket (网络套接字) 2 总结 0 引言 在学习的过程…

OpenGLES:绘制一个混色旋转的3D球体

效果展示 本博文会实现一个混色旋转的3D球体 一.球体解析 前几篇博文讲解了如何使用OpenGLES实现不同的3D图形 这一篇讲解怎样绘制3D世界的代表图形:一个混色旋转的3D球体 1.1 极限正多面体 如果看过我前几篇3D图形绘制的博文,就知道要绘制一个3D图…

第三课 哈希表、集合、映射

文章目录 第三课 哈希表、集合、映射lc1.两数之和--简单题目描述代码展示 lc30.串联所有单词的子串--困难题目描述代码展示 lc49.字母异位分组--中等题目描述代码展示 lc874.模拟行走机器人--中等题目描述代码展示 lc146.LRU缓存--中等题目描述相关补充思路讲解代码展示图示理解…

正点原子嵌入式linux驱动开发——U-boot启动流程详解

在上一篇笔记中详细分析了uboot的顶层Makefile,理清了uboot的编译流程。本章来详细的分析一下uboot的启动流程,理清uboot是如何启动的。通过对uboot启动流程的梳理,可以掌握一些外设是在哪里被初始化的,这样当需要修改这些外设驱动…

java的内存模型(概念)

在java中,设计之初就有了:主内存、线程工作内存,所以其实每一个线程执行时,都是将主线程copy一份到工作线程,执行修改后,再同步回去。 所以,就有四组内存操作方式: 1、读主内存&…

postgresql-物化视图

postgresql-物化视图 物化视图创建物化视图刷新物化视图修改物化视图删除物化视图 物化视图 创建物化视图 postgresql使用create materialized view 语句创建视图 create materialized view if not exists name as query [with [NO] data];-- 创建一个包含员工统计信息的物化…

自学SLAM(2)---保姆教程教你如何使用自己的视频运行ORB-SLAM2

前言 如果你是新手入门,仅仅只会Linux的基本操作,并看了高翔老师视觉SLAM视屏的第一讲,那么你需要准备一整天的时间,可能还不一定能运行出来!运行ORB-SLAM2将会安装很多很多东西。那么,我们准备开始&#x…

CRMEB商城源码开源标准版v5.2.0+后端+前端uni-app开源包安装教程

CRMEB打通版是一款全开源支持商用的PHP多语言商城系统,历经年时间匠心之作!系统采用前后端分离技术,基于TP6Uui-app框架开发;客户移动端采用uni-app开发,管理后台前端使用iviewUI开发。系统支持微信公众号端、微信小程序端、H5端、…

C语言之自定义类型_结构体篇(1)

目录 什么是结构? 结构体类型的声明 常规声明 特殊声明-匿名结构体 结构体变量的定义和初始化和访问 定义 初始化 访问 嵌套结构体 结构体的自引用 什么是结构体的自引用 NO1. NO2. 热门考点:结构体内存对齐 产生内存对齐 NO1 NO2 …

二十九、高级IO与多路转接之epollreactor(收官!)

文章目录 一、Poll(一)定义(二)实现原理(三)优点(四)缺点 二、I/O多路转接之epoll(一)从网卡接收数据说起(二)如何知道接收了数据&…

蓝桥杯每日一题2023.9.28

AcWing 4409. 砍竹子 - AcWing 题目描述 题目分析 注:sqrtl的范围为long double,比sqrt更加精确 使用优先队列维护一段区间,如果连续一段相同就合并为一个区间,从大到小去枚举,每次先取出最大的一段,双…

专业综合课程设计 - 优阅书城项目(第一版)

此项目是《专业综合课程设计》带练项目 实现的功能有: 登录、注销、添加图书、删除图书、编辑图书 包含资源: 优阅书城(bookstore)源码 数据库数据 课程笔记 下载链接:https://wwpv.lanzoue.com/i79nx1av4doj 登录功…

windows系统服务管理命令sc

sc可以用于管理系统服务、计划任务、系统日志等方面,是不可或缺的神器。 基本用法 在命令提示符下输入sc命令,然后按回车键。 上图展示的是sc命令的使用方法,支持哪些参数实现哪些功能 要查看系统所有服务列表,包括它们是否正在…

逻辑回归评分卡

文章目录 一、基础知识点(1)逻辑回归表达式(2)sigmoid函数的导数损失函数(Cross-entropy, 交叉熵损失函数)交叉熵求导准确率计算评估指标 二、导入库和数据集导入库读取数据 三、分析与训练四、模型评价ROC曲线KS值再做特征筛选生成报告 五、行为评分卡模型表现总结 一、基础知…

Go-Python-Java-C-LeetCode高分解法-第八周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 我搜集到了50道精选题,适合速成概览大部分常用算法 突…

2023年-华为机试题库B卷(Python)【满分】

1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ 🔟 华为机试题库B卷 已于5月10号 更新为2023 B卷 (2023-10-04 更新本文) 华为机试有三道题目,前两道属于简单或中等题,分值为100分,第三道为中等或…