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