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.车牌识别与管理系统...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
