docker详解介绍+基础操作 (三)优化配置
1.docker 存储引擎
Overlay: 一种Union FS文件系统,Linux 内核3.18后支持
Overlay2:Overlay的升级版,docker的默认存储引擎,需要磁盘分区支持d-type功能,因此需要系统磁盘的额外支持。
关于 d-type 传送门 docker详解介绍+基础操作 (二)-CSDN博客
由于centos8及ubuntu1604版本均支持,其他引擎就不展开说明了
2.docker优化配置
注:新建容器有效,优化前的容器不生效
1)docker优化
优化 Docker 的配置文件(通常是 `/etc/docker/daemon.json`)可以显著提高 Docker 的性能和安全性。以下是一些详细的配置选项和解释,帮助你根据具体需求进行优化。
①. 存储驱动优化
选择合适的存储驱动
Docker 使用存储驱动来管理容器的文件系统。选择合适的存储驱动可以提高性能。
overlay2:这是默认的存储驱动,适用于大多数情况。它提供了良好的性能和较低的磁盘使用率。
{"storage-driver": "overlay2"}
devicemapper:适用于某些特定的存储设备,但性能可能不如 overlay2。
{"storage-driver": "devicemapper"}
配置存储选项
对于 `overlay2`,可以配置一些高级选项,例如 `size` 和 `mountopt`。
{"storage-driver": "overlay2","storage-opts": ["overlay2.size=10G","overlay2.mountopt=nodev"]
}
overlay2.size:设置每个容器的文件系统大小限制。
overlay2.mountopt:设置挂载选项,例如 nodev可以禁用设备文件的挂载。
②. 日志驱动和日志大小限制
限制容器的日志大小可以防止日志文件占用过多磁盘空间。
{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}
}
log-driver:指定日志驱动,默认是 `json-file`。
max-size:设置每个日志文件的最大大小。
max-file:设置日志文件的最大数量。
③. DNS 配置
优化 DNS 配置可以提高容器的网络性能。
{"dns": ["8.8.8.8", "8.8.4.4"],"dns-opts": ["ndots:2", "timeout:2", "attempts:2"]
}
dns:指定 DNS 服务器地址。
dns-opts:设置 DNS 查询选项,例如 `ndots`、`timeout` 和 `attempts`。
④. 网络配置
优化网络配置可以提高容器的网络性能和安全性。
{"iptables": true,"ip-forward": true,"ip-masq": true,"userland-proxy": false,"bridge": "docker0","fixed-cidr": "172.17.0.0/16","mtu": 1500
}
iptables:启用或禁用 `iptables` 规则。
ip-forward:启用 IP 转发。
ip-masq:启用 NAT 转发。
userland-proxy:禁用用户态代理,使用内核态代理。
bridge:指定默认的网桥接口。
fixed-cidr:指定固定的 CIDR 范围。
mtu:设置最大传输单元(MTU)。
⑤. 安全配置
启用安全选项可以提高容器的安全性。
{"security-opt": ["apparmor=unconfined","seccomp=unconfined"],"cgroup-parent": "/docker-cgroups"
}
apparmor:配置 AppArmor 安全策略。
seccomp:配置 Seccomp 安全策略。
cgroup-parent:指定 cgroup 的父目录。
⑥. 资源限制
限制 Docker 守护进程的资源使用可以防止其占用过多系统资源。
{"default-ulimits": {"nofile": {"Name": "nofile","Hard": 65536,"Soft": 65536}},"live-restore": true
}
default-ulimits:设置默认的资源限制。
live-restore:启用实时恢复,以便在 Docker 守护进程重启时保持容器运行。
⑦. 实验性功能
启用实验性功能可以尝试新的特性和改进,但需要注意这些功能可能不稳定。
{"experimental": true
}
⑧. 镜像加速
使用镜像加速器可以加快镜像的下载速度。
{"registry-mirrors": ["https://mirror.example.com"]
}
registry-mirrors:指定镜像加速器的 URL。
⑨. 高级配置
数据根目录
指定 Docker 数据的根目录,可以提高磁盘性能。
{"data-root": "/mnt/docker-data"
}
data-root:指定 Docker 数据的根目录。
代理配置
配置 HTTP 和 HTTPS 代理,以便 Docker 守护进程可以通过代理访问互联网。
{"http-proxy": "http://proxy.example.com:8080","https-proxy": "https://proxy.example.com:8080","no-proxy": "localhost,127.0.0.1,.example.com"
}
http-proxy:HTTP 代理的 URL。
https-proxy:HTTPS 代理的 URL。
no-proxy:不需要通过代理访问的主机列表。
保存配置文件后,重启 Docker 服务以使更改生效。
sudo systemctl daemon-reload && systemctl restart docker
⑩开启远程连接
开启 Docker 的远程连接功能可以让你从其他机器上通过 API 或 CLI 管理 Docker 守护进程。以下是如何配置 Docker 以允许远程连接的详细步骤。
1. 修改 Docker 配置文件
Docker 的配置文件通常是 `/etc/docker/daemon.json`。你需要在这个文件中添加或修改 `hosts` 配置项,以允许远程连接。
1.1 打开配置文件
使用你喜欢的文本编辑器打开 `/etc/docker/daemon.json` 文件:
sudo vim /etc/docker/daemon.json
1.2 添加或修改 hosts 配置
在 daemon.json 文件中添加或修改 hosts 配置项,以允许远程连接。例如,如果你想允许所有 IP 地址通过 TCP 连接到 Docker 守护进程,可以使用以下配置:
{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
unix:///var/run/docker.sock:本地 Unix 套接字,用于本地连接。
-tcp://0.0.0.0:2375:允许所有 IP 地址通过 TCP 端口 2375 连接到 Docker 守护进程。
如果你只想允许特定的 IP 地址连接,可以使用以下配置:
{"hosts": ["unix:///var/run/docker.sock", "tcp://192.168.1.100:2375"]
}
这里 192.168.1.100 是你希望允许连接的 IP 地址。
2. 重启 Docker 服务
保存配置文件后,重启 Docker 服务以使更改生效:
sudo systemctl daemon-reload && systemctl restart docker
3. 配置防火墙
确保防火墙允许 TCP 端口 2375 的流量。你可以使用 ufw(Uncomplicated Firewall)或其他防火墙工具来配置。
3.1 使用 ufw
如果你使用ufw,可以运行以下命令允许端口 2375:
sudo ufw allow 2375/tcp
3.2 使用 iptables
如果你使用 iptables,可以运行以下命令允许端口 2375:
sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT
sudo service iptables save
4. 验证远程连接
从另一台机器上,使用 docker CLI 连接到远程 Docker 守护进程。例如,假设远程 Docker 守护进程的 IP 地址是 192.168.1.100,你可以运行以下命令:
docker -H tcp://192.168.1.100:2375 version
如果连接成功,你应该会看到 Docker 守护进程的版本信息。
5. 安全性考虑
开启远程连接会增加安全风险,因此建议采取以下措施:
使用 TLS 加密:配置 TLS 以加密通信,防止中间人攻击。
限制访问:只允许信任的 IP 地址访问 Docker 守护进程。
使用防火墙:配置防火墙规则,仅允许特定 IP 地址访问端口 2375。
使用认证:配置 Docker 守护进程使用认证机制,例如 HTTP 基本认证或 OAuth。
5.1 配置 TLS
1. 生成 TLS 证书和密钥:
你可以使用 openssl`生成自签名证书和密钥:
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca-key.pem -x509 -days 365 -out ca.pemopenssl req -newkey rsa:4096 -nodes -sha256 -keyout server-key.pem -out server.csropenssl x509 -req -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365openssl req -newkey rsa:4096 -nodes -sha256 -keyout client-key.pem -out client.csropenssl x509 -req -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365
2. 配置 Docker 守护进程:
在 /etc/docker/daemon.json 文件中添加 TLS 相关配置:
{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],"tls": true,"tlscacert": "/path/to/ca.pem","tlscert": "/path/to/server-cert.pem","tlskey": "/path/to/server-key.pem","tlsverify": true}
3. 重启 Docker 服务:
sudo systemctl daemon-reload && systemctl restart docker
4. 从客户端连接:
从客户端机器上,使用 TLS 连接到 Docker 守护进程:
docker -H tcp://192.168.1.100:2375 --tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/client-cert.pem --tlskey=/path/to/client-key.pem version
相关文章:
docker详解介绍+基础操作 (三)优化配置
1.docker 存储引擎 Overlay: 一种Union FS文件系统,Linux 内核3.18后支持 Overlay2:Overlay的升级版,docker的默认存储引擎,需要磁盘分区支持d-type功能,因此需要系统磁盘的额外支持。 关于 d-type 传送…...
细说Qt的状态机框架及其用法
文章目录 使用场景基本用法状态定义添加转换历史状态QStateMachine是Qt框架中用于构建状态机的一个类,它属于Qt的状态机框架(State Machine Framework)。这个框架提供了一种模型,用于设计响应不同事件(如用户输入、文件I/O或网络活动)的应用程序的行为。通过使用状态机,开发…...
Oracle-表空间与数据文件操作
目录 1、表空间创建 2、表空间修改 3、数据文件可用性切换操作 4、数据文件和表空间删除 1、表空间创建 (1)为 ORCL 数据库创建一个名为 BOOKTBS1 的永久表空间,数据文件为d:\bt01.dbf ,大小为100M,区采用自动扩展…...
C# WinForm实现画笔签名及解决MemoryBmp格式问题
目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现,本文应项目需求介绍如何通过 C# WinForm 通过画布画笔…...
GC1272替代APX9172/茂达中可应用于电脑散热风扇应用分析
在电脑散热风扇应用中,选择合适的驱动器件对于风扇的性能和效率至关重要。以下是对GC1272替代APX9172/茂达在此类应用中的分析: 1. 功能比较 GC1272: 主要用于驱动直流风扇,具有高效的电流控制和调速功能。支持PWM调速࿰…...
《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化
List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU: –根据应用需求选择多核、高频的CPU,以满足高并发和计算密集型任务的需求。CPU缓存优化: –确保CPU缓存&#x…...
PHP政务招商系统——高效连接共筑发展蓝图
政务招商系统——高效连接,共筑发展蓝图 🏛️ 一、政务招商系统:开启智慧招商新篇章 在当今经济全球化的背景下,政务招商成为了推动地方经济发展的重要引擎。而政务招商系统的出现,更是为这一进程注入了新的活力。它…...
Linux 命令行
这学期是我第一次正式学习 linux ,是在 VMware 里创建了 openEuler 的虚拟机练习 linux 的常用命令。 目前主要在学习 linux 的常用命令,因此这篇博客主要介绍一些常用的命令。 本文将持续更新… 阅读建议 Linux 是一个倒置的树结构(文件系…...
每日一题:单例模式
每日一题:单例模式 ❝ 单例模式是确保一个类只有一个实例,并提供一个全局访问点 1.饿汉式(静态常量) 特点:在类加载时就创建了实例。优点:简单易懂,线程安全。缺点:无论是否使用&…...
前端_001_html扫盲
文章目录 概念标签及属性常用全局属性head里常用标签body里常用标签表情符号 url编码 概念 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body></bod…...
49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?
上一篇文章我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求…...
使用js和canvas实现简单的网页贪吃蛇小游戏
玩法介绍 点击开始游戏后,使用键盘上的↑↓←→控制移动,吃到食物增加长度,碰到墙壁或碰到自身就游戏结束 代码实现 代码比较简单,直接阅读注释即可,复制即用 <!DOCTYPE html> <html lang"en"…...
Kafka SASL/PLAIN认证模式
Kafka 认证模式命令使用示例 创建Topic 指定用户创建 [rootkafka01 kraft]# /usr/local/kafka3.5-sasl-data/bin/kafka-topics.sh --bootstrap-server x.x.x.11:9092 --create --topic fkaaa35 --replication-factor 3 --partitions 3 --command-config /usr/local/kafka3.…...
苹果AI科学家研究证明基于LLM的模型存在缺陷 因为它们无法推理
苹果公司人工智能科学家的一篇新论文发现,基于大型语言模型的引擎(如 Meta 和 OpenAI 的引擎)仍然缺乏基本的推理能力。该小组提出了一个新的基准–GSM-Symbolic,以帮助其他人衡量各种大型语言模型(LLM)的推…...
鸿蒙NEXT开发-页面路由(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
asp.net Core MVC 内容协商
内容协商 内容协商是Asp.Net Core 控制器的一项功能,而Asp.Net MVC5 控制器并不支持它。 引入内容协商是为了满足 Web API 框架的需要。 在 Asp.net Core 中,内容协商 被内置到引擎中,供开发人员使用。 顾名思义,内容协商指的是…...
智能EDA小白从0开始 —— DAY10 Yosys
Yosys 概述 工作原理 Yosys的工作原理深入来讲,是一个复杂但有序的硬件设计自动化流程,其核心在于将高级硬件描述语言(HDL)如Verilog或VHDL编写的代码,通过一系列精细的步骤转换为门级网表。这一流程首先涉及对HDL代…...
《OpenCV计算机视觉》—— 人脸检测
文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器(cv2.CascadeClassifier())2.检测图像中的人脸(cv2.CascadeClassifier.detectMultiscale()) 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…...
【unity框架开发12】从零手搓unity存档存储数据持久化系统,实现对存档的创建,获取,保存,加载,删除,缓存,加密,支持多存档
文章目录 前言一、Unity对Json数据的操作方法一、JsonUtility方法二、Newtonsoft 二、持久化的数据路径三、数据加密/解密加密方法解密方法 四、条件编译指令限制仅在编辑器模式下进行加密/解密四、数据持久化管理器1、存档工具类2、一个存档数据3、存档系统数据类4、数据存档存…...
YOLOv11进行图像与视频的目标检测
一、AI应用系统实战项目 项目名称项目名称1.人脸识别与管理系统2.车牌识别与管理系统...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
