[{"data":1,"prerenderedAt":1576},["ShallowReactive",2],{"site-search-articles":3,"article-\u002Fblog\u002F10\u002F10-docker\u002Fanddockeranddocker-compose":403,"article-around-\u002Fblog\u002F10\u002F10-docker\u002Fanddockeranddocker-compose":1517},[4,17,29,40,51,60,68,76,83,90,98,104,110,116,128,137,145,154,163,170,178,184,190,195,202,210,215,221,226,232,237,245,252,257,264,272,276,282,289,295,299,303,308,313,319,324,328,333,340,346,351,359,365,372,378,385,392,398],{"id":5,"path":6,"title":7,"description":8,"date":9,"tags":10,"category":14,"minutes":15,"pinned":16},"blog\u002Fblog\u002Fnuxt4-vuetify4-blog.md","\u002Fblog\u002Fnuxt4-vuetify4-blog","Nuxt 4 + Vuetify 4 个人博客搭建记录","从内容结构、组件分层到服务端渲染，记录这个博客从零开始的完整实现过程。","2026-08-30",[11,12,13],"Nuxt","Vuetify","博客","开发",12,true,{"id":18,"path":19,"title":20,"description":21,"date":22,"tags":23,"category":26,"minutes":27,"pinned":28},"blog\u002Fblog\u002Fphoto-migration.md","\u002Fblog\u002Fphoto-migration","Google 相册迁移到 iCloud 分享","梳理照片导出、元数据修复与共享图库迁移过程，记录几个容易忽略的细节。","2026-08-26",[24,25],"相册","iCloud","生活",8,false,{"id":30,"path":31,"title":32,"description":33,"date":34,"tags":35,"category":14,"minutes":39,"pinned":28},"blog\u002Fblog\u002Fdocker-proxy.md","\u002Fblog\u002Fdocker-proxy","Docker 部署与反向代理配置","使用多阶段构建、容器重启策略和 Nginx 反向代理完成博客服务的可重复部署。","2026-08-18",[36,37,38],"Docker","Nginx","部署",10,{"id":41,"path":42,"title":43,"description":44,"date":45,"tags":46,"category":49,"minutes":50,"pinned":28},"blog\u002Fblog\u002Fsummer-coast.md","\u002Fblog\u002Fsummer-coast","一组夏日海边照片","把散落在相机和手机里的片段整理成一篇安静的夏日相册。","2026-08-09",[47,48],"摄影","夏日","随记",5,{"id":52,"path":53,"title":54,"description":54,"date":55,"tags":56,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F09-CloudFlare 优选 IP.md","\u002Fblog\u002F40\u002F09-cloudflare-ip","CloudFlare 优选 IP","2026-07-22 03:17:28",[57,58],"Cloudflare","优选域名","Blog",{"id":61,"path":62,"title":63,"description":63,"date":64,"tags":65,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F08-Cloudflare ImgBed 免费私有图床完整部署手册.md","\u002Fblog\u002F40\u002F08-cloudflare-imgbed","Cloudflare ImgBed 免费私有图床完整部署手册","2026-07-19 02:09:08",[57,66,67],"对象存储","图床",{"id":69,"path":70,"title":71,"description":71,"date":72,"tags":73,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F07-腾讯云 EdgeOne 边缘函数实现七牛&S3 随机图床 API.md","\u002Fblog\u002F40\u002F07-edgeone-ands3-api","腾讯云 EdgeOne 边缘函数实现七牛云 & S3 存储随机图床 API","2026-07-13 21:25:48",[74,75,67],"EdgeOne","七牛云",{"id":77,"path":78,"title":79,"description":79,"date":80,"tags":81,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F06-腾讯 EdgeOne 部署 Twikoo 评论系统指南.md","\u002Fblog\u002F40\u002F06-edgeone-twikoo","腾讯EdgeOne部署Twikoo评论系统指南","2026-06-14 17:41:11",[74,82],"Twikoo",{"id":84,"path":85,"title":86,"description":86,"date":87,"tags":88,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F05-OpenList 接入 S3 对象存储完整使用教程.md","\u002Fblog\u002F40\u002F05-openlist-s3","OpenList 接入 S3 对象存储完整使用教程","2026-06-11 13:08:07",[66,89],"OpenList",{"id":91,"path":92,"title":93,"description":94,"date":95,"tags":96,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F04-赛博大善人Cloudflare R2 图床.md","\u002Fblog\u002F40\u002F04-cloudflare-r2","赛博大善人 Cloudflare R2 图床","基于 Cloudflare R2 + 腾讯 Edge One + PicList 搭建免费、全球加速的图床方案","2026-06-09 13:07:35",[59,67,97],"CDN加速",{"id":99,"path":100,"title":101,"description":101,"date":102,"tags":103,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F03-白嫖免费图床，套CDN加速.md","\u002Fblog\u002F40\u002F03-cdn","白嫖免费图床，套 CDN 加速","2026-06-09",[59,67,97],{"id":105,"path":106,"title":107,"description":107,"date":108,"tags":109,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F02-零基础优雅搭建静态博客全教程.md","\u002Fblog\u002F40\u002F02","零基础优雅搭建静态博客全教程","2026-06-04",[59],{"id":111,"path":112,"title":113,"description":113,"date":114,"tags":115,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F01-远古产物—博客.md","\u002Fblog\u002F40\u002F01","赛博空间的私人岛屿：博客架构与风格美学","2026-06-03",[59],{"id":117,"path":118,"title":119,"description":119,"date":120,"tags":121,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F15.关于NAT回流与内网域名直连的终极指南.md","\u002Fblog\u002F10\u002F20\u002Fnat","关于 NAT 回流与内网域名直连的终极指南","2026-05-13",[122,123,124,125,126],"docker","DNS","Lucky","NAT 回流","远程访问","软路由",{"id":129,"path":130,"title":131,"description":131,"date":132,"tags":133,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F25.基于QMediaSync的飞牛外网strm直连.md","\u002Fblog\u002F10\u002F30-nas\u002Fqmediasyncstrm","基于 Lucky 反代与 QMediaSync 的飞牛外网 STRM 直连","2026-02-08",[134,135,136],"NAS","飞牛 OS","Strm",{"id":138,"path":139,"title":140,"description":140,"date":141,"tags":142,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F14.基于飞牛漏洞安全访问lucky反代&雷池防护.md","\u002Fblog\u002F10\u002F20\u002Fluckyand","基于飞牛漏洞安全访问Lucky反代&雷池防护","2026-02-03",[122,143,124,144,126],"WAF","飞牛",{"id":146,"path":147,"title":148,"description":148,"date":149,"tags":150,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F03.oec-fnOS安装.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Foec-fnos","OEC-Turbo (RK3566) 安装飞牛 OS","2026-01-24",[151,152,134],"OEC","飞牛OS","N1&玩客云&OEC",{"id":155,"path":156,"title":157,"description":157,"date":158,"tags":159,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F13.Lucky反向代理终极指南.md","\u002Fblog\u002F10\u002F20\u002Flucky","Lucky 反向代理终极指南","2026-01-16",[122,160,161,124,162,126],"OpenWRT","IPv4","IPv6",{"id":164,"path":165,"title":166,"description":166,"date":167,"tags":168,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F11.NAS 导航页的终极形态.md","\u002Fblog\u002F10\u002F10-docker\u002Fnas","告别繁琐配置：NAS 导航页的终极形态 —— 从 Sun-Panel 到 FlatNAS","2026-01-05",[122,134,169],"导航页",{"id":171,"path":172,"title":173,"description":173,"date":174,"tags":175,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F10.LogVar 弹幕 API 部署指南.md","\u002Fblog\u002F10\u002F10-docker\u002Flogvar-api","LogVar 弹幕 API  (纯本地缓存版) 部署指南","2025-12-30",[122,176,177],"弹幕 API","媒体库",{"id":179,"path":180,"title":181,"description":181,"date":182,"tags":183,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F24.飞牛NAS第三方应用商店安装.md","\u002Fblog\u002F10\u002F30-nas\u002Fnas","飞牛 NAS 第三方应用商店 (FnDepot) 安装指南","2025-12-02",[134,135],{"id":185,"path":186,"title":187,"description":187,"date":188,"tags":189,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F09.兰空图床和高清图标库.md","\u002Fblog\u002F10\u002F10-docker","兰空图床和高清图标库","2025-11-15",[122,67],{"id":191,"path":186,"title":192,"description":192,"date":193,"tags":194,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F08.你是否需要一个图床？.md","你是否需要一个图床？","2025-11-14",[122,67],{"id":196,"path":197,"title":198,"description":198,"date":199,"tags":200,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F23.Hills播放器-Windows-安卓.md","\u002Fblog\u002F10\u002F30-nas\u002Fhills-windows","Hills 播放器（Windows + 安卓）","2025-11-10",[201],"Emby 第三方播放器",{"id":203,"path":204,"title":205,"description":205,"date":206,"tags":207,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F02.Debian13换源.md","\u002Fblog\u002F10\u002F50-linux\u002Fdebian13","Debian13 换源","2025-09-10",[208,209],"Linux","debian",{"id":211,"path":212,"title":213,"description":213,"date":206,"tags":214,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F04.Linux系统，音响有底噪.md","\u002Fblog\u002F10\u002F50-linux\u002Flinux","Linux 系统，音响有底噪怎么办？",[208],{"id":216,"path":217,"title":218,"description":218,"date":206,"tags":219,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F05.一键DD纯净系统脚本.md","\u002Fblog\u002F10\u002F50-linux\u002Fdd","一键 DD 纯净系统脚本",[208,220],"dd 系统",{"id":222,"path":223,"title":224,"description":224,"date":206,"tags":225,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F08.一行代码降低服务器功耗.md","\u002Fblog\u002F10\u002F50-linux","一行代码降低服务器功耗",[208,209],{"id":227,"path":228,"title":229,"description":229,"date":206,"tags":230,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F01.N1盒子永不为奴-Armbian.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Fn1-armbian","N1 盒子永不为奴 Armbian",[231,208],"N1",{"id":233,"path":234,"title":235,"description":235,"date":206,"tags":236,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F02.OEC站起来了-Armbian.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Foec-armbian","OEC 盒子永不为奴 Armbian",[151,208],{"id":238,"path":239,"title":240,"description":241,"date":242,"tags":243,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F01.容器&docker&docker-compose.md","\u002Fblog\u002F10\u002F10-docker\u002Fanddockeranddocker-compose","容器 & docker & docker-compose","初识 yaml 语法和 docker","2025-08-05",[122,244],"yaml",{"id":246,"path":247,"title":248,"description":249,"date":242,"tags":250,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F02.容器项目&下载类.md","\u002Fblog\u002F10\u002F10-docker\u002Fand","容器项目&下载类","采用docker搭建下载服务",[122,244,251],"下载",{"id":253,"path":247,"title":254,"description":255,"date":242,"tags":256,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目&相册类.md","容器项目&相册类","采用 docker 搭建 AI 相册",[122,244,24],{"id":258,"path":247,"title":259,"description":260,"date":242,"tags":261,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F04.容器项目&影视类.md","容器项目&影视类","采用 docker 影视媒体库",[122,244,262,263],"影视媒体库","Emby",{"id":265,"path":266,"title":267,"description":268,"date":242,"tags":269,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F05.Emby直连115网盘（一）.md","\u002Fblog\u002F10\u002F10-docker\u002Femby115","Emby直连115网盘（一）","使用 Emby 直连 115 网盘",[122,244,262,263,270,271],"strm","115 网盘",{"id":273,"path":266,"title":274,"description":268,"date":242,"tags":275,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F06.Emby直连115网盘（二）.md","Emby直连115网盘（二）",[122,244,262,263,270,271],{"id":277,"path":278,"title":279,"description":279,"date":242,"tags":280,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F07.Adguard Home去广告.md","\u002Fblog\u002F10\u002F10-docker\u002Fadguard-home","Adguard Home 去广告",[122,281],"Adguard Home",{"id":283,"path":284,"title":285,"description":286,"date":242,"tags":287,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F01.新的篇章，软路由.md","\u002Fblog\u002F10\u002F20","新的篇章，软路由","初识软路由",[127,288,160],"爱快",{"id":290,"path":284,"title":291,"description":292,"date":242,"tags":293,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F02.如何玩公网，怎么远程访问（一）.md","如何玩公网，怎么远程访问（一）","公网远程访问，IPv6也是公网",[127,126,294],"公网 IP",{"id":296,"path":284,"title":297,"description":292,"date":242,"tags":298,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F03.如何玩公网，怎么远程访问（二）.md","如何玩公网，怎么远程访问（二）",[127,126,294],{"id":300,"path":284,"title":301,"description":292,"date":242,"tags":302,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F04.如何玩公网，怎么远程访问（三）.md","如何玩公网，怎么远程访问（三）",[127,126,294],{"id":304,"path":284,"title":305,"description":305,"date":242,"tags":306,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F05.白嫖域名，远程访问.md","白嫖域名，远程访问",[127,126,307],"免费域名",{"id":309,"path":284,"title":310,"description":310,"date":242,"tags":311,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F06.没有公网如何远程访问.md","没有公网如何远程访问",[127,126,312],"内网穿透",{"id":314,"path":315,"title":316,"description":316,"date":242,"tags":317,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F07.爱快与OpenWRT双软路由MAC地址重复问题修正.md","\u002Fblog\u002F10\u002F20\u002Fopenwrtmac","爱快与 OpenWRT 双软路由MAC地址重复问题修正",[288,160,318],"MAC 地址",{"id":320,"path":321,"title":322,"description":322,"date":242,"tags":323,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F08.OpenWRT扩容.md","\u002Fblog\u002F10\u002F20\u002Fopenwrt","OpenWRT 扩容",[160],{"id":325,"path":321,"title":326,"description":326,"date":242,"tags":327,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F09.OpenWRT旁路由一条龙教程.md","OpenWRT 旁路由一条龙教程",[160],{"id":329,"path":330,"title":331,"description":331,"date":242,"tags":332,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F01.Emby刮削以及尽可能刮削到中文.md","\u002Fblog\u002F10\u002F30-nas\u002Femby","Emby 刮削以及尽可能刮削到中文",[263,177],{"id":334,"path":335,"title":336,"description":336,"date":242,"tags":337,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F02.Kodi&CoreELEC安装指南.md","\u002Fblog\u002F10\u002F30-nas\u002Fkodiandcoreelec","Kodi & CoreELEC 安装指南",[338,339,177],"Kodi","CoreELEC",{"id":341,"path":342,"title":343,"description":344,"date":242,"tags":345,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F20.飞牛OS的安装.md","\u002Fblog\u002F10\u002F30-nas\u002Fos","飞牛 OS 的安装","初识飞牛 NAS",[134,135],{"id":347,"path":342,"title":348,"description":349,"date":242,"tags":350,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F21.飞牛OS安装后必要配置.md","飞牛 OS 安装后必要配置","飞牛 NAS 基础配置",[134,135],{"id":352,"path":353,"title":354,"description":355,"date":242,"tags":356,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F01.新的篇章，PVE虚拟机.md","\u002Fblog\u002F10\u002F40\u002Fpve","新的篇章，PVE虚拟机","初识 PVE 虚拟机",[208,209,357,358],"PVE","虚拟机",{"id":360,"path":361,"title":362,"description":363,"date":242,"tags":364,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F03.基于PVE系统安装LXC-debian.md","\u002Fblog\u002F10\u002F40\u002Fpvelxc-debian","基于 PVE 系统安装 LXC-debian","初识 LXC debian",[208,209,357,358],{"id":366,"path":367,"title":368,"description":368,"date":242,"tags":369,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F07.Ventoy多系统启动盘制作与使用全指南.md","\u002Fblog\u002F10\u002F40\u002Fventoy","Ventoy 多系统启动盘制作与使用全指南",[370,371],"Ventoy","PE 系统",{"id":373,"path":374,"title":375,"description":376,"date":242,"tags":377,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F01.新的篇章，debian12的配置.md","\u002Fblog\u002F10\u002F50-linux\u002Fdebian12","新的篇章，debian12 的配置","初识 debian 12",[208,209],{"id":379,"path":380,"title":381,"description":381,"date":242,"tags":382,"category":383,"minutes":50,"pinned":28},"blog\u002Fblog\u002F20-生活感悟\u002F02.在裂缝中种满阳光.md","\u002Fblog\u002F20","让灵魂带着光行走：在裂缝中种满太阳",[383,384],"生活感悟","随笔记录",{"id":386,"path":387,"title":388,"description":388,"date":242,"tags":389,"category":391,"minutes":50,"pinned":28},"blog\u002Fblog\u002F30-学习笔记\u002F01.Typora学习笔记.md","\u002Fblog\u002F30\u002Ftypora","Typora学习笔记",[390],"Typora","学习笔记",{"id":393,"path":394,"title":395,"description":395,"date":242,"tags":396,"category":391,"minutes":50,"pinned":28},"blog\u002Fblog\u002F30-学习笔记\u002F02.Markdown 拓展.md","\u002Fblog\u002F30\u002Fmarkdown","Markdown 拓展",[397],"Markdown",{"id":399,"path":380,"title":400,"description":400,"date":401,"tags":402,"category":383,"minutes":50,"pinned":28},"blog\u002Fblog\u002F20-生活感悟\u002F01.拥抱生活中的光与热.md","拥抱生活中的光与热","2025-07-05",[383,384],{"id":238,"title":240,"body":404,"category":122,"date":242,"description":241,"draft":28,"extension":1508,"meta":1509,"minutes":50,"navigation":16,"path":239,"pinned":28,"seo":1513,"stem":1514,"tags":1515,"__hash__":1516},{"type":405,"value":406,"toc":1491},"minimark",[407,411,416,421,425,429,432,467,471,474,517,521,524,528,531,535,538,548,557,560,586,590,593,658,661,664,668,675,684,687,882,885,920,922,926,933,940,943,973,976,1404,1406,1410,1413,1420,1429,1432,1441,1444,1453,1455,1459,1462,1469,1478,1480,1484,1487],[408,409,240],"h1",{"id":410},"容器-docker-docker-compose",[412,413,415],"h2",{"id":414},"_1-yaml文件语法规则","1 yaml文件语法规则",[417,418,420],"h3",{"id":419},"_11-规则一缩进","1.1 规则一：缩进",[422,423,424],"p",{},"yaml使用一个固定的缩进风格表示数据层结构关系，需要每个缩进级别由两个空格组成，一定不能使用tab键。",[417,426,428],{"id":427},"_12-规则二冒号","1.2 规则二：冒号",[422,430,431],{},"每个冒号后面一定要有一个空格，以冒号结尾不需要空格。",[433,434,438],"pre",{"className":435,"code":436,"language":244,"meta":437,"style":437},"language-yaml shiki shiki-themes github-light github-dark","services:\nimage: mtphotos\u002Fmt-photos:latest\n","",[439,440,441,454],"code",{"__ignoreMap":437},[442,443,446,450],"span",{"class":444,"line":445},"line",1,[442,447,449],{"class":448},"s9eBZ","services",[442,451,453],{"class":452},"sVt8B",":\n",[442,455,457,460,463],{"class":444,"line":456},2,[442,458,459],{"class":448},"image",[442,461,462],{"class":452},": ",[442,464,466],{"class":465},"sZZnC","mtphotos\u002Fmt-photos:latest\n",[412,468,470],{"id":469},"_13-规则三短横线","1.3 规则三：短横线",[422,472,473],{},"想要表示列表项，使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分。",[433,475,477],{"className":435,"code":476,"language":244,"meta":437,"style":437},"environment:\n  - TZ=Asia\u002FShanghai\n  - LANG=C.UTF-8\n  - PUID=1000\n  - PGID=100\n",[439,478,479,486,494,502,510],{"__ignoreMap":437},[442,480,481,484],{"class":444,"line":445},[442,482,483],{"class":448},"environment",[442,485,453],{"class":452},[442,487,488,491],{"class":444,"line":456},[442,489,490],{"class":452},"  - ",[442,492,493],{"class":465},"TZ=Asia\u002FShanghai\n",[442,495,497,499],{"class":444,"line":496},3,[442,498,490],{"class":452},[442,500,501],{"class":465},"LANG=C.UTF-8\n",[442,503,505,507],{"class":444,"line":504},4,[442,506,490],{"class":452},[442,508,509],{"class":465},"PUID=1000\n",[442,511,512,514],{"class":444,"line":50},[442,513,490],{"class":452},[442,515,516],{"class":465},"PGID=100\n",[412,518,520],{"id":519},"_2-容器是什么","2 容器是什么？",[422,522,523],{},"容器就是一个轻量化，独立，把环境依赖和配置打包在一起，单独运行。",[412,525,527],{"id":526},"_3-docker和docker-compose区别","3 docker和docker-compose区别",[422,529,530],{},"什么是容器以及docker和docker-compose区别，我就不说了，本质是一样的，只不过compose更好管理。而且我现在只使用docker-compose.yaml这样的文件，优点是可以一个yaml文件搭建一个项目，包含好几个容器，这样方便管理。",[412,532,534],{"id":533},"_4-如何安装docker","4 如何安装docker",[422,536,537],{},"我主要以 debian 12为例，所以安装docker的命令如下：",[422,539,540,547],{},[541,542,546],"a",{"href":543,"rel":544},"https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fhelp\u002Fdocker-ce\u002F",[545],"nofollow","清华大学镜像wiki","，里面有安装docker教程。",[433,549,551],{"className":435,"code":550,"language":244,"meta":437,"style":437},"export DOWNLOAD_URL=\"https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fdocker-ce\"\n",[439,552,553],{"__ignoreMap":437},[442,554,555],{"class":444,"line":445},[442,556,550],{"class":465},[422,558,559],{},"如果你使用curl或者使用wget",[433,561,563],{"className":435,"code":562,"language":244,"meta":437,"style":437},"apt install curl -y\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fdocker-install\u002Fmaster\u002Finstall.sh | sh\n# 或者使用wget\nwget -O- https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fdocker-install\u002Fmaster\u002Finstall.sh | sh\n",[439,564,565,570,575,581],{"__ignoreMap":437},[442,566,567],{"class":444,"line":445},[442,568,569],{"class":465},"apt install curl -y\n",[442,571,572],{"class":444,"line":456},[442,573,574],{"class":465},"curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fdocker-install\u002Fmaster\u002Finstall.sh | sh\n",[442,576,577],{"class":444,"line":496},[442,578,580],{"class":579},"sJ8bj","# 或者使用wget\n",[442,582,583],{"class":444,"line":504},[442,584,585],{"class":465},"wget -O- https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fdocker-install\u002Fmaster\u002Finstall.sh | sh\n",[412,587,589],{"id":588},"_5-安装docker-compose管理工具","5 安装docker-compose管理工具",[422,591,592],{},"docker-compose管理工具有很多，最精简的是portainer，占用很小，我的基本docker路径目录树如下建立：",[433,594,596],{"className":435,"code":595,"language":244,"meta":437,"style":437},"root（根目录）\n├── docker（分支节点：docker目录）\n│ ├── apps（叶子节点：docker app目录）\n│ │ ├── emby路径\n│ │ └── music路径\n│ └── docker-compose（叶子节点：docker-compose.yaml目录）\n│ │ ├── emby\n│ │ │ └── docker-compsoe.yaml\n│ │ ├── music\n│ │ └──── docker-compsoe.yaml\n...\n",[439,597,598,603,608,613,618,623,629,635,640,646,651],{"__ignoreMap":437},[442,599,600],{"class":444,"line":445},[442,601,602],{"class":465},"root（根目录）\n",[442,604,605],{"class":444,"line":456},[442,606,607],{"class":465},"├── docker（分支节点：docker目录）\n",[442,609,610],{"class":444,"line":496},[442,611,612],{"class":465},"│ ├── apps（叶子节点：docker app目录）\n",[442,614,615],{"class":444,"line":504},[442,616,617],{"class":465},"│ │ ├── emby路径\n",[442,619,620],{"class":444,"line":50},[442,621,622],{"class":465},"│ │ └── music路径\n",[442,624,626],{"class":444,"line":625},6,[442,627,628],{"class":465},"│ └── docker-compose（叶子节点：docker-compose.yaml目录）\n",[442,630,632],{"class":444,"line":631},7,[442,633,634],{"class":465},"│ │ ├── emby\n",[442,636,637],{"class":444,"line":27},[442,638,639],{"class":465},"│ │ │ └── docker-compsoe.yaml\n",[442,641,643],{"class":444,"line":642},9,[442,644,645],{"class":465},"│ │ ├── music\n",[442,647,648],{"class":444,"line":39},[442,649,650],{"class":465},"│ │ └──── docker-compsoe.yaml\n",[442,652,654],{"class":444,"line":653},11,[442,655,657],{"class":656},"sScJk","...\n",[422,659,660],{},"我这样建立目录是为了方便管理，yaml文件和docker项目数据是分开的。",[662,663],"hr",{},[417,665,667],{"id":666},"_51-portainer","5.1 portainer",[422,669,670,671],{},"在ssh中以root用户直接输入以下代码，就可以安装中文版本的portainer，web访问端口是9000，",[541,672,674],{"rel":673},[545],"http:\u002F\u002Fip:9000，安装完成请立即访问并且注册密码，密码必须为数字，英文以及标点符号得三种复杂组合。",[433,676,678],{"className":435,"code":677,"language":244,"meta":437,"style":437},"docker run -d --restart=always --name=portainer -p 9000:9000 -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock 6053537\u002Fportainer-ce\n",[439,679,680],{"__ignoreMap":437},[442,681,682],{"class":444,"line":445},[442,683,677],{"class":465},[422,685,686],{},"当然上面这个是docker，下面这个我发一下compose版本的。",[433,688,690],{"className":435,"code":689,"language":244,"meta":437,"style":437},"# 官方文档\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002F6053537\u002Fportainer-ce\n\n# ---\n\nname: portainer-ce\n# 最后编辑时间：2025-03-12\nservices:\n  portainer-ce:\n    # 镜像地址\n    image: 6053537\u002Fportainer-ce\n    # 容器名\n    container_name: portainer-ce\n    # 主机名\n    hostname: portainer-ce\n    # 路径\n    volumes:\n      # docker核心配置\n       - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n    # 网络模式：桥接模式\n    network_mode: bridge\n    # 端口\n    ports:\n      # webUI端口\n      - 9000:9000\n    # 重启策略，总是重启\n    restart: always\n",[439,691,692,697,702,707,712,716,726,731,737,744,749,759,764,774,780,790,796,804,810,819,825,836,842,850,856,865,871],{"__ignoreMap":437},[442,693,694],{"class":444,"line":445},[442,695,696],{"class":579},"# 官方文档\n",[442,698,699],{"class":444,"line":456},[442,700,701],{"class":579},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002F6053537\u002Fportainer-ce\n",[442,703,704],{"class":444,"line":496},[442,705,706],{"emptyLinePlaceholder":16},"\n",[442,708,709],{"class":444,"line":504},[442,710,711],{"class":579},"# ---\n",[442,713,714],{"class":444,"line":50},[442,715,706],{"emptyLinePlaceholder":16},[442,717,718,721,723],{"class":444,"line":625},[442,719,720],{"class":448},"name",[442,722,462],{"class":452},[442,724,725],{"class":465},"portainer-ce\n",[442,727,728],{"class":444,"line":631},[442,729,730],{"class":579},"# 最后编辑时间：2025-03-12\n",[442,732,733,735],{"class":444,"line":27},[442,734,449],{"class":448},[442,736,453],{"class":452},[442,738,739,742],{"class":444,"line":642},[442,740,741],{"class":448},"  portainer-ce",[442,743,453],{"class":452},[442,745,746],{"class":444,"line":39},[442,747,748],{"class":579},"    # 镜像地址\n",[442,750,751,754,756],{"class":444,"line":653},[442,752,753],{"class":448},"    image",[442,755,462],{"class":452},[442,757,758],{"class":465},"6053537\u002Fportainer-ce\n",[442,760,761],{"class":444,"line":15},[442,762,763],{"class":579},"    # 容器名\n",[442,765,767,770,772],{"class":444,"line":766},13,[442,768,769],{"class":448},"    container_name",[442,771,462],{"class":452},[442,773,725],{"class":465},[442,775,777],{"class":444,"line":776},14,[442,778,779],{"class":579},"    # 主机名\n",[442,781,783,786,788],{"class":444,"line":782},15,[442,784,785],{"class":448},"    hostname",[442,787,462],{"class":452},[442,789,725],{"class":465},[442,791,793],{"class":444,"line":792},16,[442,794,795],{"class":579},"    # 路径\n",[442,797,799,802],{"class":444,"line":798},17,[442,800,801],{"class":448},"    volumes",[442,803,453],{"class":452},[442,805,807],{"class":444,"line":806},18,[442,808,809],{"class":579},"      # docker核心配置\n",[442,811,813,816],{"class":444,"line":812},19,[442,814,815],{"class":452},"       - ",[442,817,818],{"class":465},"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n",[442,820,822],{"class":444,"line":821},20,[442,823,824],{"class":579},"    # 网络模式：桥接模式\n",[442,826,828,831,833],{"class":444,"line":827},21,[442,829,830],{"class":448},"    network_mode",[442,832,462],{"class":452},[442,834,835],{"class":465},"bridge\n",[442,837,839],{"class":444,"line":838},22,[442,840,841],{"class":579},"    # 端口\n",[442,843,845,848],{"class":444,"line":844},23,[442,846,847],{"class":448},"    ports",[442,849,453],{"class":452},[442,851,853],{"class":444,"line":852},24,[442,854,855],{"class":579},"      # webUI端口\n",[442,857,859,862],{"class":444,"line":858},25,[442,860,861],{"class":452},"      - ",[442,863,864],{"class":465},"9000:9000\n",[442,866,868],{"class":444,"line":867},26,[442,869,870],{"class":579},"    # 重启策略，总是重启\n",[442,872,874,877,879],{"class":444,"line":873},27,[442,875,876],{"class":448},"    restart",[442,878,462],{"class":452},[442,880,881],{"class":465},"always\n",[422,883,884],{},"docker可以直接在ssh上运行代码就行了，但是docker-compose.yaml文件的docker怎么运行呢？",[433,886,888],{"className":435,"code":887,"language":244,"meta":437,"style":437},"# 创建文件夹\nmkdir -p \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fportainer-ce\n# cd 到存放yaml文件夹下\ncd \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fportainer-ce\n# 拉取镜像并且启动docker \ndocker compose pull && docker compose up -d\n",[439,889,890,895,900,905,910,915],{"__ignoreMap":437},[442,891,892],{"class":444,"line":445},[442,893,894],{"class":579},"# 创建文件夹\n",[442,896,897],{"class":444,"line":456},[442,898,899],{"class":465},"mkdir -p \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fportainer-ce\n",[442,901,902],{"class":444,"line":496},[442,903,904],{"class":579},"# cd 到存放yaml文件夹下\n",[442,906,907],{"class":444,"line":504},[442,908,909],{"class":465},"cd \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fportainer-ce\n",[442,911,912],{"class":444,"line":50},[442,913,914],{"class":579},"# 拉取镜像并且启动docker \n",[442,916,917],{"class":444,"line":625},[442,918,919],{"class":465},"docker compose pull && docker compose up -d\n",[662,921],{},[417,923,925],{"id":924},"_52-dpanel","5.2 dpanel",[422,927,928,929],{},"在ssh中以root用户直接输入以下代码，就可以安装dpanel，web访问端口是8807，",[541,930,932],{"rel":931},[545],"http:\u002F\u002Fip:8807。",[422,934,935],{},[541,936,939],{"href":937,"rel":938},"https:\u002F\u002Fdpanel.cc\u002F",[545],"dpanel的wiki文档可以阅读一下。",[422,941,942],{},"docker代码如下：",[433,944,946],{"className":435,"code":945,"language":244,"meta":437,"style":437},"docker run -it -d --name dpanel --restart=always \\\n -p 8880:80 -p 4443:443 -p 8807:8080 \\\n -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n -v \u002Fdocker\u002Fapps\u002Fdpanel:\u002Fdpanel -e APP_NAME=dpanel dpanel\u002Fdpanel:latest\n#\u002Fdocker\u002Fappsdpanel安装路径可以根据个人喜好修改，端口也一样\n",[439,947,948,953,958,963,968],{"__ignoreMap":437},[442,949,950],{"class":444,"line":445},[442,951,952],{"class":465},"docker run -it -d --name dpanel --restart=always \\\n",[442,954,955],{"class":444,"line":456},[442,956,957],{"class":465}," -p 8880:80 -p 4443:443 -p 8807:8080 \\\n",[442,959,960],{"class":444,"line":496},[442,961,962],{"class":465}," -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n",[442,964,965],{"class":444,"line":504},[442,966,967],{"class":465}," -v \u002Fdocker\u002Fapps\u002Fdpanel:\u002Fdpanel -e APP_NAME=dpanel dpanel\u002Fdpanel:latest\n",[442,969,970],{"class":444,"line":50},[442,971,972],{"class":579},"#\u002Fdocker\u002Fappsdpanel安装路径可以根据个人喜好修改，端口也一样\n",[422,974,975],{},"compose的yaml代码如下：",[433,977,979],{"className":435,"code":978,"language":244,"meta":437,"style":437},"# 官方文档\n# https:\u002F\u002Fdpanel.cc\n# https:\u002F\u002Fgithub.com\u002Fdonknap\u002Fdpanel\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdpanel\u002Fdpanel\n\n# ssh  cd 到文件夹下\n# cd \u002Fdocker\u002Fapps\u002Fdpanel\n\n# 手动更新升级启动 \n# docker compose pull && docker compose up -d\n\n\n# ---\n\nname: dpanel\n# 最后编辑时间：2025-03-05\nservices:\n  dpanel:\n    # 镜像地址，tag可选 latest\u002Flite\n    # lite 版去掉了域名转发相关，需要自行转发域名绑定容器，不需要绑定 80 及 443 端口\n    image: registry.cn-hangzhou.aliyuncs.com\u002Fdpanel\u002Fdpanel:latest\n    # 容器名字\n    # 更改此名称后，请同步修改下方 APP_NAME 环境变量\n    container_name: dpanel \n    # 主机名\n    hostname: dpanel\n    environment:\n      # 请保持此名称与 container_name 一致\n      APP_NAME: dpanel \n      # 账号\n      INSTALL_USERNAME: admin\n      # 密码\n      INSTALL_PASSWORD: admin\n    volumes:\n      # docker核心路径\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      # 数据库文件目录\n      - \u002Fdocker\u002Fapps\u002Fdpanel:\u002Fdpanel \n    # 网络模式\n    network_mode: bridge\n    ports:\n      # 域名转发相关，lite版不需要\n      - 8805:80\n      - 8806:443\n      # WebUI 端口\n      - 8807:8080\n    # 重启策略，总是重启\n    restart: always\n\n  dpanel-plugin-explorer: \n    # 镜像地址，该镜像为 dpanel 的文件浏览器，隔离特权\n    image: alpine:latest\n    # 容器名字\n    container_name: dpanel-plugin-explorer\n    # 容器特权模式\n    privileged: true\n    pid: host\n    command: [\"sh\", \"-c\", \"tail -f \u002Fdev\u002Fnull\"]\n    # 重启策略，总是重启\n    restart: always\n",[439,980,981,985,990,995,1000,1004,1009,1014,1018,1023,1028,1032,1036,1040,1044,1053,1058,1064,1071,1076,1081,1090,1095,1100,1112,1116,1124,1131,1137,1149,1155,1166,1172,1182,1189,1195,1202,1208,1218,1224,1233,1240,1246,1254,1262,1268,1276,1281,1290,1295,1304,1310,1320,1325,1335,1341,1353,1364,1390,1395],{"__ignoreMap":437},[442,982,983],{"class":444,"line":445},[442,984,696],{"class":579},[442,986,987],{"class":444,"line":456},[442,988,989],{"class":579},"# https:\u002F\u002Fdpanel.cc\n",[442,991,992],{"class":444,"line":496},[442,993,994],{"class":579},"# https:\u002F\u002Fgithub.com\u002Fdonknap\u002Fdpanel\n",[442,996,997],{"class":444,"line":504},[442,998,999],{"class":579},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdpanel\u002Fdpanel\n",[442,1001,1002],{"class":444,"line":50},[442,1003,706],{"emptyLinePlaceholder":16},[442,1005,1006],{"class":444,"line":625},[442,1007,1008],{"class":579},"# ssh  cd 到文件夹下\n",[442,1010,1011],{"class":444,"line":631},[442,1012,1013],{"class":579},"# cd \u002Fdocker\u002Fapps\u002Fdpanel\n",[442,1015,1016],{"class":444,"line":27},[442,1017,706],{"emptyLinePlaceholder":16},[442,1019,1020],{"class":444,"line":642},[442,1021,1022],{"class":579},"# 手动更新升级启动 \n",[442,1024,1025],{"class":444,"line":39},[442,1026,1027],{"class":579},"# docker compose pull && docker compose up -d\n",[442,1029,1030],{"class":444,"line":653},[442,1031,706],{"emptyLinePlaceholder":16},[442,1033,1034],{"class":444,"line":15},[442,1035,706],{"emptyLinePlaceholder":16},[442,1037,1038],{"class":444,"line":766},[442,1039,711],{"class":579},[442,1041,1042],{"class":444,"line":776},[442,1043,706],{"emptyLinePlaceholder":16},[442,1045,1046,1048,1050],{"class":444,"line":782},[442,1047,720],{"class":448},[442,1049,462],{"class":452},[442,1051,1052],{"class":465},"dpanel\n",[442,1054,1055],{"class":444,"line":792},[442,1056,1057],{"class":579},"# 最后编辑时间：2025-03-05\n",[442,1059,1060,1062],{"class":444,"line":798},[442,1061,449],{"class":448},[442,1063,453],{"class":452},[442,1065,1066,1069],{"class":444,"line":806},[442,1067,1068],{"class":448},"  dpanel",[442,1070,453],{"class":452},[442,1072,1073],{"class":444,"line":812},[442,1074,1075],{"class":579},"    # 镜像地址，tag可选 latest\u002Flite\n",[442,1077,1078],{"class":444,"line":821},[442,1079,1080],{"class":579},"    # lite 版去掉了域名转发相关，需要自行转发域名绑定容器，不需要绑定 80 及 443 端口\n",[442,1082,1083,1085,1087],{"class":444,"line":827},[442,1084,753],{"class":448},[442,1086,462],{"class":452},[442,1088,1089],{"class":465},"registry.cn-hangzhou.aliyuncs.com\u002Fdpanel\u002Fdpanel:latest\n",[442,1091,1092],{"class":444,"line":838},[442,1093,1094],{"class":579},"    # 容器名字\n",[442,1096,1097],{"class":444,"line":844},[442,1098,1099],{"class":579},"    # 更改此名称后，请同步修改下方 APP_NAME 环境变量\n",[442,1101,1102,1104,1106,1109],{"class":444,"line":852},[442,1103,769],{"class":448},[442,1105,462],{"class":452},[442,1107,1108],{"class":465},"dpanel",[442,1110,1111],{"class":452}," \n",[442,1113,1114],{"class":444,"line":858},[442,1115,779],{"class":579},[442,1117,1118,1120,1122],{"class":444,"line":867},[442,1119,785],{"class":448},[442,1121,462],{"class":452},[442,1123,1052],{"class":465},[442,1125,1126,1129],{"class":444,"line":873},[442,1127,1128],{"class":448},"    environment",[442,1130,453],{"class":452},[442,1132,1134],{"class":444,"line":1133},28,[442,1135,1136],{"class":579},"      # 请保持此名称与 container_name 一致\n",[442,1138,1140,1143,1145,1147],{"class":444,"line":1139},29,[442,1141,1142],{"class":448},"      APP_NAME",[442,1144,462],{"class":452},[442,1146,1108],{"class":465},[442,1148,1111],{"class":452},[442,1150,1152],{"class":444,"line":1151},30,[442,1153,1154],{"class":579},"      # 账号\n",[442,1156,1158,1161,1163],{"class":444,"line":1157},31,[442,1159,1160],{"class":448},"      INSTALL_USERNAME",[442,1162,462],{"class":452},[442,1164,1165],{"class":465},"admin\n",[442,1167,1169],{"class":444,"line":1168},32,[442,1170,1171],{"class":579},"      # 密码\n",[442,1173,1175,1178,1180],{"class":444,"line":1174},33,[442,1176,1177],{"class":448},"      INSTALL_PASSWORD",[442,1179,462],{"class":452},[442,1181,1165],{"class":465},[442,1183,1185,1187],{"class":444,"line":1184},34,[442,1186,801],{"class":448},[442,1188,453],{"class":452},[442,1190,1192],{"class":444,"line":1191},35,[442,1193,1194],{"class":579},"      # docker核心路径\n",[442,1196,1198,1200],{"class":444,"line":1197},36,[442,1199,861],{"class":452},[442,1201,818],{"class":465},[442,1203,1205],{"class":444,"line":1204},37,[442,1206,1207],{"class":579},"      # 数据库文件目录\n",[442,1209,1211,1213,1216],{"class":444,"line":1210},38,[442,1212,861],{"class":452},[442,1214,1215],{"class":465},"\u002Fdocker\u002Fapps\u002Fdpanel:\u002Fdpanel",[442,1217,1111],{"class":452},[442,1219,1221],{"class":444,"line":1220},39,[442,1222,1223],{"class":579},"    # 网络模式\n",[442,1225,1227,1229,1231],{"class":444,"line":1226},40,[442,1228,830],{"class":448},[442,1230,462],{"class":452},[442,1232,835],{"class":465},[442,1234,1236,1238],{"class":444,"line":1235},41,[442,1237,847],{"class":448},[442,1239,453],{"class":452},[442,1241,1243],{"class":444,"line":1242},42,[442,1244,1245],{"class":579},"      # 域名转发相关，lite版不需要\n",[442,1247,1249,1251],{"class":444,"line":1248},43,[442,1250,861],{"class":452},[442,1252,1253],{"class":465},"8805:80\n",[442,1255,1257,1259],{"class":444,"line":1256},44,[442,1258,861],{"class":452},[442,1260,1261],{"class":465},"8806:443\n",[442,1263,1265],{"class":444,"line":1264},45,[442,1266,1267],{"class":579},"      # WebUI 端口\n",[442,1269,1271,1273],{"class":444,"line":1270},46,[442,1272,861],{"class":452},[442,1274,1275],{"class":465},"8807:8080\n",[442,1277,1279],{"class":444,"line":1278},47,[442,1280,870],{"class":579},[442,1282,1284,1286,1288],{"class":444,"line":1283},48,[442,1285,876],{"class":448},[442,1287,462],{"class":452},[442,1289,881],{"class":465},[442,1291,1293],{"class":444,"line":1292},49,[442,1294,706],{"emptyLinePlaceholder":16},[442,1296,1298,1301],{"class":444,"line":1297},50,[442,1299,1300],{"class":448},"  dpanel-plugin-explorer",[442,1302,1303],{"class":452},": \n",[442,1305,1307],{"class":444,"line":1306},51,[442,1308,1309],{"class":579},"    # 镜像地址，该镜像为 dpanel 的文件浏览器，隔离特权\n",[442,1311,1313,1315,1317],{"class":444,"line":1312},52,[442,1314,753],{"class":448},[442,1316,462],{"class":452},[442,1318,1319],{"class":465},"alpine:latest\n",[442,1321,1323],{"class":444,"line":1322},53,[442,1324,1094],{"class":579},[442,1326,1328,1330,1332],{"class":444,"line":1327},54,[442,1329,769],{"class":448},[442,1331,462],{"class":452},[442,1333,1334],{"class":465},"dpanel-plugin-explorer\n",[442,1336,1338],{"class":444,"line":1337},55,[442,1339,1340],{"class":579},"    # 容器特权模式\n",[442,1342,1344,1347,1349],{"class":444,"line":1343},56,[442,1345,1346],{"class":448},"    privileged",[442,1348,462],{"class":452},[442,1350,1352],{"class":1351},"sj4cs","true\n",[442,1354,1356,1359,1361],{"class":444,"line":1355},57,[442,1357,1358],{"class":448},"    pid",[442,1360,462],{"class":452},[442,1362,1363],{"class":465},"host\n",[442,1365,1367,1370,1373,1376,1379,1382,1384,1387],{"class":444,"line":1366},58,[442,1368,1369],{"class":448},"    command",[442,1371,1372],{"class":452},": [",[442,1374,1375],{"class":465},"\"sh\"",[442,1377,1378],{"class":452},", ",[442,1380,1381],{"class":465},"\"-c\"",[442,1383,1378],{"class":452},[442,1385,1386],{"class":465},"\"tail -f \u002Fdev\u002Fnull\"",[442,1388,1389],{"class":452},"]\n",[442,1391,1393],{"class":444,"line":1392},59,[442,1394,870],{"class":579},[442,1396,1398,1400,1402],{"class":444,"line":1397},60,[442,1399,876],{"class":448},[442,1401,462],{"class":452},[442,1403,881],{"class":465},[662,1405],{},[417,1407,1409],{"id":1408},"_53-宝塔面板","5.3 宝塔面板",[422,1411,1412],{},"介绍了两款轻量级面板，那么我来介绍两款比较好用全面的面板。宝塔面板不多说了，直接安装官方版本如下链接和代码。",[422,1414,1415],{},[541,1416,1419],{"href":1417,"rel":1418},"https:\u002F\u002Fwww.bt.cn\u002Fnew\u002Fdownload.html",[545],"宝塔官网链接。",[433,1421,1423],{"className":435,"code":1422,"language":244,"meta":437,"style":437},"if [ -f \u002Fusr\u002Fbin\u002Fcurl ];then curl -sSO https:\u002F\u002Fdownload.bt.cn\u002Finstall\u002Finstall_panel.sh;else wget -O install_panel.sh https:\u002F\u002Fdownload.bt.cn\u002Finstall\u002Finstall_panel.sh;fi;bash install_panel.sh ed8484bec\n",[439,1424,1425],{"__ignoreMap":437},[442,1426,1427],{"class":444,"line":445},[442,1428,1422],{"class":465},[422,1430,1431],{},"当然装了官方版本，也有开心版，试验性Centos\u002FUbuntu\u002FDebian安装命令独立运行环境python3.7。",[433,1433,1435],{"className":435,"code":1434,"language":244,"meta":437,"style":437},"curl -sSO http:\u002F\u002Fio.bt.sb\u002Finstall\u002Finstall_panel.sh&& bash install_panel.sh\n",[439,1436,1437],{"__ignoreMap":437},[442,1438,1439],{"class":444,"line":445},[442,1440,1434],{"class":465},[422,1442,1443],{},"或者安装debian 和Ubuntu版本",[433,1445,1447],{"className":435,"code":1446,"language":244,"meta":437,"style":437},"wget -O install.sh http:\u002F\u002Fio.bt.sb\u002Finstall\u002Finstall-ubuntu_6.0.sh&& bash install.sh\n",[439,1448,1449],{"__ignoreMap":437},[442,1450,1451],{"class":444,"line":445},[442,1452,1446],{"class":465},[662,1454],{},[417,1456,1458],{"id":1457},"_54-1panel","5.4 1Panel",[422,1460,1461],{},"1Panel 是新一代的 Linux 服务器运维管理面板，也是我觉得比较好用的面板，后面的文章我都以 1Panel 或者 dpanel 为例。",[422,1463,1464],{},[541,1465,1468],{"href":1466,"rel":1467},"https:\u002F\u002F1panel.cn\u002F",[545],"1Panel官网链接。",[433,1470,1472],{"className":435,"code":1471,"language":244,"meta":437,"style":437},"bash -c \"$(curl -sSL https:\u002F\u002Fresource.fit2cloud.com\u002F1panel\u002Fpackage\u002Fv2\u002Fquick_start.sh)\"\n",[439,1473,1474],{"__ignoreMap":437},[442,1475,1476],{"class":444,"line":445},[442,1477,1471],{"class":465},[662,1479],{},[412,1481,1483],{"id":1482},"_6-好玩的-docker-项目","6 好玩的 docker 项目",[422,1485,1486],{},"好玩的 docker 项目有很多，我这里主要通过下载，音乐，影视，几个方面介绍。",[1488,1489,1490],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":437,"searchDepth":456,"depth":456,"links":1492},[1493,1497,1498,1499,1500,1501,1507],{"id":414,"depth":456,"text":415,"children":1494},[1495,1496],{"id":419,"depth":496,"text":420},{"id":427,"depth":496,"text":428},{"id":469,"depth":456,"text":470},{"id":519,"depth":456,"text":520},{"id":526,"depth":456,"text":527},{"id":533,"depth":456,"text":534},{"id":588,"depth":456,"text":589,"children":1502},[1503,1504,1505,1506],{"id":666,"depth":496,"text":667},{"id":924,"depth":496,"text":925},{"id":1408,"depth":496,"text":1409},{"id":1457,"depth":496,"text":1458},{"id":1482,"depth":456,"text":1483},"md",{"published":1510,"author":1511,"image":1512},"2025-08-11","十三","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780560880263.avif",{"title":240,"description":241},"blog\u002F10-技术专栏\u002F10-docker\u002F01.容器&docker&docker-compose",[122,244],"a4Tn_EX9gNJcnsO5CjRW-Fq2qGYIAXdCDnHIGS3TXRs",[1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575],{"path":6,"title":7,"date":9},{"path":19,"title":20,"date":22},{"path":31,"title":32,"date":34},{"path":42,"title":43,"date":45},{"path":53,"title":54,"date":55},{"path":62,"title":63,"date":64},{"path":70,"title":71,"date":72},{"path":78,"title":79,"date":80},{"path":85,"title":86,"date":87},{"path":92,"title":93,"date":95},{"path":100,"title":101,"date":102},{"path":106,"title":107,"date":108},{"path":112,"title":113,"date":114},{"path":118,"title":119,"date":120},{"path":130,"title":131,"date":132},{"path":139,"title":140,"date":141},{"path":147,"title":148,"date":149},{"path":156,"title":157,"date":158},{"path":165,"title":166,"date":167},{"path":172,"title":173,"date":174},{"path":180,"title":181,"date":182},{"path":186,"title":187,"date":188},{"path":186,"title":192,"date":193},{"path":197,"title":198,"date":199},{"path":204,"title":205,"date":206},{"path":212,"title":213,"date":206},{"path":217,"title":218,"date":206},{"path":223,"title":224,"date":206},{"path":228,"title":229,"date":206},{"path":234,"title":235,"date":206},{"path":239,"title":240,"date":242},{"path":247,"title":248,"date":242},{"path":247,"title":254,"date":242},{"path":247,"title":259,"date":242},{"path":266,"title":267,"date":242},{"path":266,"title":274,"date":242},{"path":278,"title":279,"date":242},{"path":284,"title":285,"date":242},{"path":284,"title":291,"date":242},{"path":284,"title":297,"date":242},{"path":284,"title":301,"date":242},{"path":284,"title":305,"date":242},{"path":284,"title":310,"date":242},{"path":315,"title":316,"date":242},{"path":321,"title":322,"date":242},{"path":321,"title":326,"date":242},{"path":330,"title":331,"date":242},{"path":335,"title":336,"date":242},{"path":342,"title":343,"date":242},{"path":342,"title":348,"date":242},{"path":353,"title":354,"date":242},{"path":361,"title":362,"date":242},{"path":367,"title":368,"date":242},{"path":374,"title":375,"date":242},{"path":380,"title":381,"date":242},{"path":387,"title":388,"date":242},{"path":394,"title":395,"date":242},{"path":380,"title":400,"date":401},1788281985018]