Docker 常用使用教程:从入门到 Compose 实战(含 save/load 与权限排障)

标题 Docker 常用使用教程:从入门到 Compose 实战(含 save/load 与权限排障) 副标题 / 摘要 很多人会 docker run,但一到离线交付和挂载权限就卡住。 本文按“能直接落地”的顺序,带你走完 Docker 常用命令、Dockerfile、Compose、save/load,以及最常见的 UID/GID 权限问题。 目标读者 想系统掌握 Docker 日常用法的开发者 需要用 Docker Compose 跑本地或测试环境的工程师 经常遇到“挂载目录写不进去”权限问题的人 背景 / 动机 在“我的机器能跑、你的机器跑不起来”的场景里,Docker 的价值不是概念,而是交付稳定性。 但实际使用中,常见断点通常在三处: 命令会用,但不知道整套流程怎么串起来 需要离线迁移时,不清楚 save/load 怎么和 Compose 配合 挂载宿主目录后,容器用户与宿主目录属主不一致导致 Permission denied 核心概念 镜像(Image):应用运行模板,分层存储,可复用 容器(Container):镜像的运行实例 仓库(Registry):镜像分发中心(如 Docker Hub) 卷(Volume):由 Docker 管理的数据持久化目录 Bind Mount:把宿主机目录直接挂载进容器 Compose:用一个 compose.yaml 管理多容器应用 一、安装与最小验证 先确保 Docker CLI 与 daemon 可用: docker --version docker info docker run --rm hello-world 如果 hello-world 能成功输出欢迎信息,说明基础环境已就绪。 ...

2026年2月12日 · 3 分钟 · map[name:Jeanphilo]

Windows 双网络分流:公司 WiFi 走内网,手机 USB 共享走外网

标题 Windows 双网络分流:公司 WiFi 走内网,手机 USB 共享走外网 副标题 / 摘要 你想访问公司内网(例如 192.168.x.x 的 Gitlab / 内部 API / 数据库),同时让浏览网页、下载等互联网流量走手机热点。 最稳的做法是:公司 WiFi 只负责内网,手机 USB 网络共享作为默认外网出口,并用 Windows 的路由优先级(跃点数/metric)把流量分开。 目标读者 需要访问公司内网服务,但不想让外网走公司出口的开发者/运维 经常在公司/外出之间切换网络,希望“插手机就能分流”的同学 Windows 10/11 用户(公司 WiFi + 手机 USB 共享) 背景 / 动机 当你同时连上: 公司 WiFi(内网:192.168.x.x) 手机 USB 网络共享(外网:互联网) Windows 会出现两个“默认网关”。如果不配置,系统可能随机抢路由,导致: 外网有时走公司(慢/受限) 内网有时走手机(根本不通) VPN/虚拟网卡(如 Tailscale、SSL VPN、WSL)插一条路由就更混乱 这篇文章的目标是把行为固定下来: 外网默认走手机 内网稳定走公司 WiFi 核心概念 默认路由(Default route):0.0.0.0/0,没有更具体匹配时走它(通常就是“上网出口”)。 最长前缀匹配:越具体的网段路由优先(例如 192.168.1.0/24 会优先于 0.0.0.0/0)。 跃点数 / Metric:当有多条可用路径时,Windows 选择 metric 更小 的那条。 接口跃点数(Interface metric):网卡层面的优先级,影响默认路由选择。 静态路由(Static route):手动指定某个网段必须走哪个网关(可选但更稳)。 A — Algorithm(题目与算法) 题目还原 电脑连接公司 WiFi(只负责访问公司内网),手机用 USB 网络共享(只负责上互联网),怎么配置才能稳定分流? ...

2026年1月30日 · 3 分钟 · map[name:Jeanphilo]

WireGuard Split Tunnel 实战:手机热点上外网,同时访问公司内网

标题 WireGuard Split Tunnel 实战:手机热点上外网,同时访问公司内网 副标题 / 摘要 你想在外网(手机热点)正常上网,同时访问公司内网(192.168.x.x)服务。 最干净的方式是:外网默认走手机热点,只有内网网段走 WireGuard(Split Tunnel)。 目标读者 需要在外网访问公司内网服务(Gitlab/内部 API/数据库)的开发者 公司内网没有官方 VPN,或现有 VPN 体验差 希望“分流”:外网不走公司出口,内网安全可控 背景 / 动机 很多公司内网服务只在私网开放(如 192.168.1.0/24)。 当你在外面用手机热点上网时: 外网访问没问题 但内网地址不可达 如果你把电脑同时连两条网络(公司 WiFi + 手机热点),“能用但不干净”: 路由/DNS 冲突、稳定性差、切换成本高。 WireGuard 的价值在于: 只打通你需要的内网网段(Split Tunnel) 外网仍走你自己的手机出口 连接快、配置简单、性能好 核心概念 WireGuard:现代 VPN 协议与实现,配置简洁、性能优秀。 Peer:对端节点(客户端/服务器)。 AllowedIPs(关键):决定哪些流量走 VPN。 Split Tunnel(分流):AllowedIPs 只写内网网段,不接管默认路由。 NAT / 端口映射:服务器在内网(192.168.*)时,外网直连需要网关转发 UDP 端口。 思维推导(从“想要双网”到“正确分流”) 需求:公司内网访问 + 手机热点上外网。 朴素解:同时连两张网卡,靠系统自动选路由 → 不稳定。 关键观察:你的目标不是“同时连两张网”,而是“只让内网走公司通道”。 方法选择:WireGuard Split Tunnel:仅路由 192.168.x.x 走 VPN。 约束:WireGuard 需要一个外网可达的 Endpoint;如果公司服务器在 NAT 后面,需要端口映射或中转方案。 A — Algorithm(题目与算法) 题目还原 电脑连手机热点上网,但还能访问公司内网(如 192.168.1.0/24)。 ...

2026年1月29日 · 3 分钟 · map[name:Jeanphilo]

Tailscale 子网路由实战:外网访问公司内网的最稳方案

标题 Tailscale 子网路由实战:外网访问公司内网的最稳方案 副标题 / 摘要 当公司内网没有公网 IP 时,Tailscale 的子网路由是最省事、最稳定的方案。 本文给出完整的部署步骤、验证方法与排错清单,适合直接落地。 目标读者 需要在外网访问公司内网服务的开发者/运维 公司没有官方 VPN,且内网在 NAT 后面 希望实现“外网走手机热点、内网走 VPN”的分流需求 背景 / 动机 很多公司内网服务器只有 192.168.x.x 等私有地址, 外网无法直接访问,传统 WireGuard 需要公网 IP 或端口映射。 Tailscale 基于 WireGuard,但可以穿透 NAT, 无需公网入口即可实现安全访问,是更工程化的解法。 核心概念 子网路由(Subnet Router):让一台内网机器“代理”整个内网段 Split Tunnel(分流):只有内网流量走 VPN,外网流量不变 Advertise Routes:向 tailnet 宣告你能到达的内网网段 Approve Routes:在控制台批准路由才能生效 实践指南 / 步骤(完整落地) 以下以公司内网 192.168.1.0/24 为例,你可替换成自己的网段。 1)在公司内网服务器安装 Tailscale curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up 登录后,服务器会出现在控制台设备列表中。 2)将服务器设置为子网路由 sudo tailscale up --advertise-routes=192.168.1.0/24 3)到控制台批准路由(必须) 打开控制台: ...

2026年1月29日 · 2 分钟 · map[name:Jeanphilo]

一台电脑同时连公司内网和手机外网:双网络分流实战

标题 一台电脑同时连公司内网和手机外网:双网络分流实战 副标题 / 摘要 想用公司内网访问内部服务,又希望互联网走手机热点? 本文给出 3 套可落地方案:USB 共享、双网卡分流、VPN Split Tunnel, 并提供 Windows/macOS/Linux 的实操步骤。 目标读者 需要访问公司内网,但不想走公司外网出口的开发者/运维 想在一个电脑上同时使用两条网络链路的技术人员 需要稳定分流、减少网络切换成本的同学 背景 / 动机 你希望达到的效果是: 公司内网服务(Gitlab、内网 API、数据库)走公司网络 外网互联网(搜索、下载、第三方服务)走手机热点 但普通电脑默认只能有一个默认网关, 所以要么全部走公司网,要么全部走手机网。 这也是需要“分流”的原因。 核心概念 网卡(NIC):每条网络连接对应一个网卡(WiFi、USB、网线) 默认路由:系统不知道去哪就走默认网关 最长前缀匹配:更具体的网段路由会优先生效 分流(Split Routing / Split Tunnel):内网走公司,外网走手机 实践指南 / 步骤 下面按稳定性从高到低给出三种方案: 方案 A:公司内网 WiFi + 手机 USB 共享(最稳定) 适用场景:只有一张 WiFi 网卡,想要最省事的分流方式。 连接公司 WiFi(内网) 手机开启 USB 共享网络,连接电脑 系统通常会把 USB 网络作为默认外网 优点:稳定、无需额外硬件; 缺点:需要 USB 连接手机。 方案 B:双 WiFi(USB 无线网卡) 适用场景:必须同时连接两个 WiFi。 ...

2026年1月29日 · 2 分钟 · map[name:Jeanphilo]

用 UFW + CrowdSec,彻底阻止恶意端口扫描:从 Fail2ban 踩坑到终极解决方案

🛡️ 用 UFW + CrowdSec,彻底阻止恶意端口扫描 副标题 / 摘要: 如何安全防护你的服务器暴露端口?本文带你从 Fail2ban 的正则地狱走出,构建一个稳定、自动化、智能化的端口扫描防御系统。 🎯 目标读者 使用 FRP / 内网穿透的开发者 管理云服务器(腾讯云、阿里云、AWS 等)的运维人员 想防御端口扫描、SSH 暴力破解的新手或中级 Linux 用户 对 Fail2ban 感兴趣、想升级到更现代安全体系的人 想完善服务器安全方案的个人开发者 💢 背景 / 动机:为什么需要端口扫描防护? 在运行 FRP(frps + frpc)或开放多个端口时,你的服务器通常会遭遇: 海量扫描:每秒多次 SYN 探测 恶意连接尝试:get a user connection […] SSH 密码爆破 自动化脚本扫描 6001–6010、7000、22、8080 等常见端口 传统做法存在痛点: 防火墙(UFW)只能被动拒绝 Fail2ban 配置复杂、依赖正则、容易误判、不支持高级行为分析 FRPS 日志格式特殊,Fail2ban 很难匹配 攻击会占用 frps/sshd 资源,最终导致卡顿、断流 因此,我们需要一个无需写正则、能自动检测扫描、智能封禁恶意 IP 的现代防御体系。 📘 核心概念 FRP(frps / frpc):用于内网穿透,常暴露大量 TCP 端口(如 6001–6010),容易被扫描。 UFW(Uncomplicated Firewall):Ubuntu 默认防火墙,但缺乏智能检测功能。 Fail2ban:传统日志匹配型封禁工具,需要手写正则,踩坑概率高。 CrowdSec(推荐):新一代开放式入侵防御系统 (IPS),自动检测端口扫描和暴力破解,事件驱动 + 行为分析,资源消耗极低,是 Fail2ban 的现代替代。 🛠 实践指南:使用 CrowdSec 自动阻止端口扫描(Ubuntu/Debian) 1) 安装 CrowdSec curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash sudo apt install crowdsec -y 2) 安装防火墙封禁组件(iptables / ufw 自动配合) sudo apt install crowdsec-firewall-bouncer-iptables CrowdSec 会自动接管封禁动作。 ...

2025年11月22日 · 2 分钟 · map[name:Jeanphilo]

🛡️ WireGuard 全面指南:构建安全高速的私人内网(VPN 实战教程)

🛡️ WireGuard 全面指南:构建安全高速的私人内网(VPN 实战教程) 副标题 / 摘要: 本文是一篇适合初学者与中级用户的 WireGuard VPN 入门与实战指南。你将学会如何搭建高速、安全、现代化的内网,并实现“服务不暴露公网,只能通过 VPN 访问”的零信任式安全架构。 👤 目标读者 想用 VPN 隐藏自己服务器/电脑端口的人 想提高服务器安全性、避免被扫描的人 希望构建私人内网 / 远程访问家庭电脑的人 Linux / Windows / 开发者 / 运维初学者 🎯 背景与动机:为什么你需要 WireGuard? 现代互联网环境下,一旦你的服务器开放端口到公网(SSH、数据库、后台服务),就会: 持续被扫描 遭遇密码爆破 被爬虫探测漏洞 面临潜在入侵风险 传统解决方案如 OpenVPN 虽然成熟,但复杂、速度慢、配置烦琐。 WireGuard 是为现代安全而生的 VPN: 小巧、安全、快,如同“下一代 VPN 协议” 代码量 < 4000 行(OpenVPN 是 40 万+) 极易配置 延迟低、带宽高 适合自建内网、服务器保护、远程办公 本文将教你如何用 WireGuard 构建一个完全隐藏在互联网上的私人内网。 🔑 核心概念 WireGuard 是什么? WireGuard 是一种现代化、极简、安全的 VPN 协议,运行在 Linux 内核中,使用最先进的加密算法(ChaCha20、Curve25519 等)。 ...

2025年11月20日 · 3 分钟 · map[name:Jeanphilo]

开启sshsystem进程失败怎么解决

标题: 🚀 在无 sudo 环境下让 sshd 常驻运行:从错误排查到 nohup 与 systemd 双方案实战 副标题 / 摘要: 本文讲述如何在普通用户权限下运行 OpenSSH 服务,逐步解决“连接被拒绝”“密码认证失败”“systemd start-limit-hit”等典型问题,并最终用 nohup 与 systemd 实现持久运行。 目标读者: Linux 中级用户、科研或企业多用户服务器使用者、无 root 权限的 SSH 自部署者。 一、背景 / 动机 在部分高校实验室或云主机环境中,普通账户没有 sudo 权限,默认 sshd 服务无法启动。 当我们需要: 远程访问自己的 Linux 主机; 使用 VS Code Remote 或 SCP 传文件; 但又无法修改系统级配置; 就必须在用户态自行运行 sshd。 然而这会引发一系列问题:端口冲突、防火墙、认证失败、start-limit-hit 等。 二、核心概念 名称 含义 sshd OpenSSH 守护进程,负责处理 SSH 登录请求 用户态 sshd 非 root 用户手动启动的 sshd 实例,仅有用户权限 authorized_keys 存放允许登录的公钥 nohup 让程序脱离终端后台运行 systemd –user 用户级 systemd 实例,可管理自启服务 start-limit-hit systemd 检测到服务频繁退出后自动暂停重启 三、实践指南 / 全流程步骤 1️⃣ 生成并配置 SSH 密钥 ssh-keygen -t ed25519 -C "" -f ~/.ssh/id_ed25519_noemail cat ~/.ssh/id_ed25519_noemail.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 确保 ~/.ssh/authorized_keys 权限正确。 ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

没有sudo权限开启ssh

以下是一篇符合优秀技术博客规范的完整文章草稿,基于你上面完整的 SSH 启动与调试过程整理而成,适合发布到技术博客(如掘金、知乎专栏、Medium 或个人博客)。 🧠 在无 sudo 权限的 Linux 环境下启动 SSH 服务(用户态 sshd 全攻略) 副标题 / 摘要: 当你在学校机房、远程实验环境或受限服务器上没有 root 权限时,如何开启 SSH 服务并远程访问?本文从零带你在用户目录下运行可用的 sshd,支持密钥登录并实现远程连接。 阅读时长: 10 分钟 目标读者: 中级 Linux 用户、科研人员、服务器使用者、DevOps 学习者 标签: SSH、sshd、Linux、远程连接、非 root、系统配置 SEO 关键词: SSH 无 root 权限、用户态 sshd、openssh 配置、非特权端口、远程登录失败 🎯 背景与动机 很多科研服务器、学校实验室或共享主机都不给普通用户 sudo 权限。 然而我们仍常常需要: 远程登录自己的账户; 上传/下载文件; 或从另一台机器访问自己的进程。 默认情况下,sshd 服务需要 root 才能运行,因为它通常绑定在 22 端口并访问系统认证信息。但事实上,我们完全可以在 用户目录 下运行一个“用户态 SSH 服务”,无需修改系统配置。 🧩 核心概念 名词 含义 sshd SSH 服务端程序,负责接收和验证 SSH 连接。 用户态(user-space)sshd 普通用户自行启动的 sshd 进程,不使用 root 权限。 HostKey 服务器用于加密连接的密钥对。 AuthorizedKeys 被允许登录该账户的公钥列表。 /etc/shadow 系统密码哈希存储文件,非 root 用户无法访问。 ⚙️ 实践指南:从零启动用户态 SSH 服务 🪜 第一步:准备配置文件 创建配置目录: ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

为什么可以Ping通却ssh不通?一次假ssh真vnc的排查过程

为什么能 Ping 通却 SSH 不通?一次“假 SSH 真 VNC” 的排查过程 副标题: 从连接被拒到协议识别,带你彻底理解 TCP、SSH 与 VNC 的区别 阅读时长: 7 分钟 标签: 网络排查、SSH、VNC、Linux、远程连接 SEO 关键词: SSH连接失败、kex_exchange_identification、VNC端口5905、RFB 003.008、SSH vs VNC 🎯 目标读者 Linux 使用者、开发者、服务器维护人员 想学习网络排错思路的中级工程师 对 SSH/VNC 协议机制有兴趣的读者 💡 背景与动机 你是否遇到过这样的情况: “服务器能 ping 通,但 SSH 连不上?” 这类问题很常见,尤其是在多服务(SSH、VNC、HTTP)混跑的远程主机上。 本文通过一次真实案例,展示从“SSH 连接失败”到“发现端口跑的是 VNC”的完整分析过程。 🔍 问题现象 执行命令: ssh chenhm@101.6.142.82 -p 5905 输出: kex_exchange_identification: Connection closed by remote host Connection closed by 101.6.142.82 port 5905 尝试 ping: ping 101.6.142.82 能通,没有丢包。 于是我们知道: ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]