<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>质量、安全与可观测 on 远栈</title><link>https://stackonward.com/zh/topics/reliability-security/</link><description>Recent content in 质量、安全与可观测 on 远栈</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://stackonward.com/zh/topics/reliability-security/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker 数据卷、文件权限与密钥怎么配置</title><link>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</guid><description>&lt;p&gt;数据库和应用状态写入 volume，只读配置使用 bind mount，密钥通过文件挂载给指定服务。配置完成后还要核对进程 UID/GID，并分别执行容器重建和独立恢复。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-volume-permissions-secrets/zh/storage-boundaries.svg" alt="容器把数据库状态写入 named volume，只读读取宿主配置，并从 secrets 文件读取密码的结构图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;数据库写入 named volume，配置只读挂载，密钥仅挂载到需要它的服务。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="根据数据用途选择-named-volumebind-mount-或-tmpfs"&gt;根据数据用途选择 named volume、bind mount 或 tmpfs&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;适合内容&lt;/th&gt;
					&lt;th&gt;优点&lt;/th&gt;
					&lt;th&gt;主要风险&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;named volume&lt;/td&gt;
					&lt;td&gt;数据库、队列、应用持久状态&lt;/td&gt;
					&lt;td&gt;生命周期由 Docker 管理，路径不与单台主机布局强耦合&lt;/td&gt;
					&lt;td&gt;宿主备份和迁移要明确卷名与驱动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;bind mount&lt;/td&gt;
					&lt;td&gt;Caddyfile、明确的数据目录、宿主脚本&lt;/td&gt;
					&lt;td&gt;路径可见，便于现有备份与权限工具管理&lt;/td&gt;
					&lt;td&gt;强依赖宿主路径、属主和 SELinux/AppArmor 条件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;tmpfs&lt;/td&gt;
					&lt;td&gt;临时敏感文件、无需持久化的高速临时数据&lt;/td&gt;
					&lt;td&gt;不写入持久磁盘&lt;/td&gt;
					&lt;td&gt;重启即丢失，容量占用内存&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/engine/storage/" target="_blank" rel="noopener"&gt;Docker storage 文档&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;建议优先用 volume 保存容器生成的持久数据；bind mount 更适合需要直接共享和管理的宿主文件。镜像层不适合承载运行数据，容器删除时可写层也会消失。&lt;/p&gt;</description></item><item><title>Docker 端口怎么暴露：127.0.0.1、0.0.0.0、防火墙与容器网络</title><link>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</link><pubDate>Wed, 02 Sep 2026 23:50:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</guid><description>&lt;p&gt;判断 Docker 端口是否暴露，需要分别查看容器内监听地址、宿主机端口绑定，以及防火墙和云安全组。容器内监听 &lt;code&gt;0.0.0.0&lt;/code&gt;，不等于该端口已经暴露到公网。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-port-firewall-loopback/zh/network-boundaries.svg" alt="公网经过云安全组和宿主防火墙访问反向代理，应用与数据库只在 Docker 网络内通信的分层图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;应用和数据库只在 Docker 网络通信；公网只能到达反向代理开放的端口。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="监听地址宿主绑定和服务名属于不同网络层"&gt;监听地址、宿主绑定和服务名属于不同网络层&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置位置&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;接受当前容器所有网络接口上的 8080 连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;只接受同一容器回环接口的连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机本地可通过 8080 访问容器 8080&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机全部 IPv4 接口发布 8080，可能被公网访问&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Compose 内部访问&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;http://app:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;同网络服务通过服务名访问容器端口&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两处 &lt;code&gt;0.0.0.0&lt;/code&gt; 的作用不同。应用在容器内监听全部接口，是为了让同网络代理访问；Docker 把端口发布到宿主全部接口，则扩大了宿主机入口。&lt;/p&gt;</description></item><item><title>Uptime Kuma网站监控搭建指南 | 开源免费的监控告警系统</title><link>https://stackonward.com/zh/posts/uptime-kuma/</link><pubDate>Fri, 11 Oct 2024 00:00:32 +0800</pubDate><guid>https://stackonward.com/zh/posts/uptime-kuma/</guid><description>&lt;h1 id="服务器部署一款开源的监控工具uptime-kuma"&gt;服务器部署一款开源的监控工具：&lt;a href="https://github.com/louislam/uptime-kuma" target="_blank" rel="noopener"&gt;Uptime Kuma&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/md/2024/202410110058830.png" alt="Uptime Kuma界面预览"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;前置条件：在服务器安装完成&lt;code&gt;Docker&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;创建安装目录&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /root/data/docker_data/uptime_kuma
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;编辑&lt;code&gt;docker-compose.yml&lt;/code&gt;文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/uptime_kuma
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输入安装脚本,以下版本为1.23.X版本，如需最新版本，需自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &lt;span class="s1"&gt;&amp;#39;3.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; uptime-kuma:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: louislam/uptime-kuma:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; container_name: uptime-kuma
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./uptime-kuma-data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 3001:3001 &lt;span class="c1"&gt;# &amp;lt;Host Port&amp;gt;:&amp;lt;Container Port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: always
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;运行安装命令&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 打开防火墙3001端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;输入http://服务器地址:3001 访问&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/md/2024/202410110059112.png" alt="Uptime Kuma登录界面"&gt;&lt;/p&gt;</description></item></channel></rss>