[{"data":1,"prerenderedAt":1200},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fdocker-setup":3},{"doc":4,"prev":1162,"next":1170,"resolvedType":8,"readingMinutes":291,"audience":1175,"checklist":1179,"related":1183},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fdocker-setup","Docker Desktop 安装与使用","Windows 上安装 Docker Desktop，配置 WSL 2 后端，使用 Docker Compose，并了解 Docker MCP Toolkit","article",null,"infra-deployment","服务器与部署","2025-10-28","i-carbon-cloud",{"type":15,"value":16,"toc":1140},"minimark",[17,21,32,35,40,43,59,62,65,68,94,97,106,109,112,141,145,148,151,186,193,196,199,202,230,233,305,308,433,437,516,582,585,588,596,599,625,629,710,747,750,753,783,787,793,804,807,858,861,929,932,940,943,948,961,965,968,971,985,1005,1008,1011,1017,1028,1031,1069,1072,1136],[18,19,6],"h1",{"id":20},"docker-desktop-安装与使用",[22,23,24,31],"p",{},[25,26,30],"a",{"href":27,"rel":28},"https:\u002F\u002Fwww.docker.com\u002F",[29],"nofollow","Docker"," 是容器化平台，用于隔离运行环境和统一服务启动方式。",[22,33,34],{},"这页只记录 Windows + WSL 环境里的 Docker Desktop 安装、配置和常用操作。",[36,37,39],"h2",{"id":38},"什么时候该用-docker-desktop","什么时候该用 Docker Desktop",[22,41,42],{},"下面几类场景，Docker 往往能明显减少环境问题：",[44,45,46,50,53,56],"ul",{},[47,48,49],"li",{},"项目依赖 PostgreSQL、Redis、Nginx 等服务",[47,51,52],{},"团队多人协作，需要统一版本与启动方式",[47,54,55],{},"你需要一键起多服务，或者要频繁切换项目环境",[47,57,58],{},"要把本地运行环境尽量靠近线上",[22,60,61],{},"但如果只是写一个纯前端 demo 或单文件脚本，直接本地跑通常更轻、更快。",[36,63,64],{"id":64},"前置条件",[22,66,67],{},"确保已启用 WSL 2：",[69,70,75],"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-powershell shiki shiki-themes github-light github-dark","wsl --install\n","powershell","",[76,77,78],"code",{"__ignoreMap":74},[79,80,83,87,91],"span",{"class":81,"line":82},"line",1,[79,84,86],{"class":85},"sVt8B","wsl ",[79,88,90],{"class":89},"szBVR","--",[79,92,93],{"class":85},"install\n",[36,95,96],{"id":96},"安装",[69,98,100],{"className":71,"code":99,"language":73,"meta":74,"style":74},"winget install Docker.DockerDesktop\n",[76,101,102],{"__ignoreMap":74},[79,103,104],{"class":81,"line":82},[79,105,99],{"class":85},[22,107,108],{},"安装后重启电脑，Docker Desktop 会自动启动。",[22,110,111],{},"验证：",[69,113,117],{"className":114,"code":115,"language":116,"meta":74,"style":74},"language-bash shiki shiki-themes github-light github-dark","docker --version\ndocker compose version\n","bash",[76,118,119,129],{"__ignoreMap":74},[79,120,121,125],{"class":81,"line":82},[79,122,124],{"class":123},"sScJk","docker",[79,126,128],{"class":127},"sj4cs"," --version\n",[79,130,132,134,138],{"class":81,"line":131},2,[79,133,124],{"class":123},[79,135,137],{"class":136},"sZZnC"," compose",[79,139,140],{"class":136}," version\n",[36,142,144],{"id":143},"docker-desktop-wsl-2-推荐配置","Docker Desktop + WSL 2 推荐配置",[22,146,147],{},"Docker 官方在 Windows 上推荐使用 WSL 2 后端，这通常比传统 Hyper-V 工作流更省资源，也更适合前端与后端本地开发。",[22,149,150],{},"建议按这个顺序检查：",[152,153,154,161,168,175],"ol",{},[47,155,156,157,160],{},"先确认 ",[76,158,159],{},"wsl --version"," 输出正常，并已安装至少一个 Linux 发行版",[47,162,163,164],{},"在 Docker Desktop 的设置中启用 ",[165,166,167],"strong",{},"Use the WSL 2 based engine",[47,169,170,171,174],{},"在 ",[165,172,173],{},"Resources → WSL Integration"," 里打开你常用发行版的集成开关",[47,176,177,178,181,182,185],{},"进入 WSL 终端，直接运行 ",[76,179,180],{},"docker version"," 和 ",[76,183,184],{},"docker compose version"," 验证",[22,187,188,189,192],{},"建议把活跃项目放在 WSL 的 Linux 文件系统中，例如 ",[76,190,191],{},"~\u002Fprojects\u002Fapp","，这样文件监听、依赖安装、容器挂载的性能更稳定。",[22,194,195],{},"如果你主要在 WSL 中开发，可以把 Docker 当成“Windows 安装、Linux 使用”的模式：Docker Desktop 负责后台引擎，终端、编辑器和代码都放在 WSL 里。",[36,197,198],{"id":198},"推荐上手路线",[22,200,201],{},"如果你是第一次系统使用 Docker，建议按下面顺序来：",[152,203,204,210,217,220,227],{},[47,205,206,207,209],{},"先确认引擎能启动，",[76,208,180],{}," 输出正常",[47,211,212,213,216],{},"用 ",[76,214,215],{},"docker run hello-world"," 验证最小工作流",[47,218,219],{},"再学会拉镜像、看日志、进容器、删容器",[47,221,222,223,226],{},"然后转向 ",[76,224,225],{},"docker compose"," 管理多服务",[47,228,229],{},"最后再补 Dockerfile、镜像优化、部署与编排",[36,231,232],{"id":232},"镜像管理",[69,234,236],{"className":114,"code":235,"language":116,"meta":74,"style":74},"docker pull nginx              # 拉取镜像\ndocker images                  # 查看本地镜像\ndocker rmi nginx               # 删除镜像\ndocker image prune             # 清理悬空镜像\ndocker system prune -a         # 清理所有未使用资源\n",[76,237,238,252,262,275,289],{"__ignoreMap":74},[79,239,240,242,245,248],{"class":81,"line":82},[79,241,124],{"class":123},[79,243,244],{"class":136}," pull",[79,246,247],{"class":136}," nginx",[79,249,251],{"class":250},"sJ8bj","              # 拉取镜像\n",[79,253,254,256,259],{"class":81,"line":131},[79,255,124],{"class":123},[79,257,258],{"class":136}," images",[79,260,261],{"class":250},"                  # 查看本地镜像\n",[79,263,265,267,270,272],{"class":81,"line":264},3,[79,266,124],{"class":123},[79,268,269],{"class":136}," rmi",[79,271,247],{"class":136},[79,273,274],{"class":250},"               # 删除镜像\n",[79,276,278,280,283,286],{"class":81,"line":277},4,[79,279,124],{"class":123},[79,281,282],{"class":136}," image",[79,284,285],{"class":136}," prune",[79,287,288],{"class":250},"             # 清理悬空镜像\n",[79,290,292,294,297,299,302],{"class":81,"line":291},5,[79,293,124],{"class":123},[79,295,296],{"class":136}," system",[79,298,285],{"class":136},[79,300,301],{"class":127}," -a",[79,303,304],{"class":250},"         # 清理所有未使用资源\n",[36,306,307],{"id":307},"容器操作",[69,309,311],{"className":114,"code":310,"language":116,"meta":74,"style":74},"docker run -d -p 8080:80 --name my-nginx nginx   # 运行容器\ndocker ps                      # 查看运行中的容器\ndocker ps -a                   # 查看所有容器\ndocker stop my-nginx           # 停止容器\ndocker start my-nginx          # 启动容器\ndocker rm my-nginx             # 删除容器\ndocker logs -f my-nginx        # 查看日志（实时）\ndocker exec -it my-nginx sh    # 进入容器\n",[76,312,313,340,350,361,373,385,398,414],{"__ignoreMap":74},[79,314,315,317,320,323,326,329,332,335,337],{"class":81,"line":82},[79,316,124],{"class":123},[79,318,319],{"class":136}," run",[79,321,322],{"class":127}," -d",[79,324,325],{"class":127}," -p",[79,327,328],{"class":136}," 8080:80",[79,330,331],{"class":127}," --name",[79,333,334],{"class":136}," my-nginx",[79,336,247],{"class":136},[79,338,339],{"class":250},"   # 运行容器\n",[79,341,342,344,347],{"class":81,"line":131},[79,343,124],{"class":123},[79,345,346],{"class":136}," ps",[79,348,349],{"class":250},"                      # 查看运行中的容器\n",[79,351,352,354,356,358],{"class":81,"line":264},[79,353,124],{"class":123},[79,355,346],{"class":136},[79,357,301],{"class":127},[79,359,360],{"class":250},"                   # 查看所有容器\n",[79,362,363,365,368,370],{"class":81,"line":277},[79,364,124],{"class":123},[79,366,367],{"class":136}," stop",[79,369,334],{"class":136},[79,371,372],{"class":250},"           # 停止容器\n",[79,374,375,377,380,382],{"class":81,"line":291},[79,376,124],{"class":123},[79,378,379],{"class":136}," start",[79,381,334],{"class":136},[79,383,384],{"class":250},"          # 启动容器\n",[79,386,388,390,393,395],{"class":81,"line":387},6,[79,389,124],{"class":123},[79,391,392],{"class":136}," rm",[79,394,334],{"class":136},[79,396,397],{"class":250},"             # 删除容器\n",[79,399,401,403,406,409,411],{"class":81,"line":400},7,[79,402,124],{"class":123},[79,404,405],{"class":136}," logs",[79,407,408],{"class":127}," -f",[79,410,334],{"class":136},[79,412,413],{"class":250},"        # 查看日志（实时）\n",[79,415,417,419,422,425,427,430],{"class":81,"line":416},8,[79,418,124],{"class":123},[79,420,421],{"class":136}," exec",[79,423,424],{"class":127}," -it",[79,426,334],{"class":136},[79,428,429],{"class":136}," sh",[79,431,432],{"class":250},"    # 进入容器\n",[36,434,436],{"id":435},"docker-compose","Docker Compose",[69,438,442],{"className":439,"code":440,"language":441,"meta":74,"style":74},"language-yaml shiki shiki-themes github-light github-dark","# docker-compose.yml 示例\nservices:\n  web:\n    image: nginx\n    ports:\n      - \"8080:80\"\n    volumes:\n      - .\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n    restart: unless-stopped\n","yaml",[76,443,444,449,458,465,476,483,491,498,505],{"__ignoreMap":74},[79,445,446],{"class":81,"line":82},[79,447,448],{"class":250},"# docker-compose.yml 示例\n",[79,450,451,455],{"class":81,"line":131},[79,452,454],{"class":453},"s9eBZ","services",[79,456,457],{"class":85},":\n",[79,459,460,463],{"class":81,"line":264},[79,461,462],{"class":453},"  web",[79,464,457],{"class":85},[79,466,467,470,473],{"class":81,"line":277},[79,468,469],{"class":453},"    image",[79,471,472],{"class":85},": ",[79,474,475],{"class":136},"nginx\n",[79,477,478,481],{"class":81,"line":291},[79,479,480],{"class":453},"    ports",[79,482,457],{"class":85},[79,484,485,488],{"class":81,"line":387},[79,486,487],{"class":85},"      - ",[79,489,490],{"class":136},"\"8080:80\"\n",[79,492,493,496],{"class":81,"line":400},[79,494,495],{"class":453},"    volumes",[79,497,457],{"class":85},[79,499,500,502],{"class":81,"line":416},[79,501,487],{"class":85},[79,503,504],{"class":136},".\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n",[79,506,508,511,513],{"class":81,"line":507},9,[79,509,510],{"class":453},"    restart",[79,512,472],{"class":85},[79,514,515],{"class":136},"unless-stopped\n",[69,517,519],{"className":114,"code":518,"language":116,"meta":74,"style":74},"docker compose up -d           # 启动服务\ndocker compose down            # 停止并删除\ndocker compose logs -f         # 查看日志\ndocker compose ps              # 查看状态\ndocker compose pull            # 更新镜像\n",[76,520,521,535,547,560,571],{"__ignoreMap":74},[79,522,523,525,527,530,532],{"class":81,"line":82},[79,524,124],{"class":123},[79,526,137],{"class":136},[79,528,529],{"class":136}," up",[79,531,322],{"class":127},[79,533,534],{"class":250},"           # 启动服务\n",[79,536,537,539,541,544],{"class":81,"line":131},[79,538,124],{"class":123},[79,540,137],{"class":136},[79,542,543],{"class":136}," down",[79,545,546],{"class":250},"            # 停止并删除\n",[79,548,549,551,553,555,557],{"class":81,"line":264},[79,550,124],{"class":123},[79,552,137],{"class":136},[79,554,405],{"class":136},[79,556,408],{"class":127},[79,558,559],{"class":250},"         # 查看日志\n",[79,561,562,564,566,568],{"class":81,"line":277},[79,563,124],{"class":123},[79,565,137],{"class":136},[79,567,346],{"class":136},[79,569,570],{"class":250},"              # 查看状态\n",[79,572,573,575,577,579],{"class":81,"line":291},[79,574,124],{"class":123},[79,576,137],{"class":136},[79,578,244],{"class":136},[79,580,581],{"class":250},"            # 更新镜像\n",[36,583,584],{"id":584},"项目目录建议",[22,586,587],{},"一个自托管或本地联调项目，目录建议尽量分清代码、配置、持久化数据：",[69,589,594],{"className":590,"code":592,"language":593,"meta":74},[591],"language-text","project\u002F\n  compose.yml\n  .env\n  app\u002F\n  config\u002F\n  data\u002F\n  backups\u002F\n","text",[76,595,592],{"__ignoreMap":74},[22,597,598],{},"经验上：",[44,600,601,607,613,619],{},[47,602,603,606],{},[76,604,605],{},"data\u002F"," 放数据库、上传目录等持久化内容",[47,608,609,612],{},[76,610,611],{},"config\u002F"," 放 Nginx、应用配置等可版本化文件",[47,614,615,618],{},[76,616,617],{},".env"," 放端口、密码、域名等环境变量，但不要提交真实密钥",[47,620,621,622,624],{},"升级服务前，先备份 ",[76,623,605],{}," 和关键配置",[36,626,628],{"id":627},"进阶dockerfile","进阶：Dockerfile",[69,630,634],{"className":631,"code":632,"language":633,"meta":74,"style":74},"language-dockerfile shiki shiki-themes github-light github-dark","FROM node:22-alpine\nWORKDIR \u002Fapp\nCOPY package.json pnpm-lock.yaml .\u002F\nRUN corepack enable && pnpm install --frozen-lockfile\nCOPY . .\nRUN pnpm build\nEXPOSE 3000\nCMD [\"node\", \".output\u002Fserver\u002Findex.mjs\"]\n","dockerfile",[76,635,636,644,652,660,668,675,682,690],{"__ignoreMap":74},[79,637,638,641],{"class":81,"line":82},[79,639,640],{"class":89},"FROM",[79,642,643],{"class":85}," node:22-alpine\n",[79,645,646,649],{"class":81,"line":131},[79,647,648],{"class":89},"WORKDIR",[79,650,651],{"class":85}," \u002Fapp\n",[79,653,654,657],{"class":81,"line":264},[79,655,656],{"class":89},"COPY",[79,658,659],{"class":85}," package.json pnpm-lock.yaml .\u002F\n",[79,661,662,665],{"class":81,"line":277},[79,663,664],{"class":89},"RUN",[79,666,667],{"class":85}," corepack enable && pnpm install --frozen-lockfile\n",[79,669,670,672],{"class":81,"line":291},[79,671,656],{"class":89},[79,673,674],{"class":85}," . .\n",[79,676,677,679],{"class":81,"line":387},[79,678,664],{"class":89},[79,680,681],{"class":85}," pnpm build\n",[79,683,684,687],{"class":81,"line":400},[79,685,686],{"class":89},"EXPOSE",[79,688,689],{"class":85}," 3000\n",[79,691,692,695,698,701,704,707],{"class":81,"line":416},[79,693,694],{"class":89},"CMD",[79,696,697],{"class":85}," [",[79,699,700],{"class":136},"\"node\"",[79,702,703],{"class":85},", ",[79,705,706],{"class":136},"\".output\u002Fserver\u002Findex.mjs\"",[79,708,709],{"class":85},"]\n",[69,711,713],{"className":114,"code":712,"language":116,"meta":74,"style":74},"docker build -t my-app .\ndocker run -d -p 3000:3000 my-app\n",[76,714,715,731],{"__ignoreMap":74},[79,716,717,719,722,725,728],{"class":81,"line":82},[79,718,124],{"class":123},[79,720,721],{"class":136}," build",[79,723,724],{"class":127}," -t",[79,726,727],{"class":136}," my-app",[79,729,730],{"class":136}," .\n",[79,732,733,735,737,739,741,744],{"class":81,"line":131},[79,734,124],{"class":123},[79,736,319],{"class":136},[79,738,322],{"class":127},[79,740,325],{"class":127},[79,742,743],{"class":136}," 3000:3000",[79,745,746],{"class":136}," my-app\n",[36,748,749],{"id":749},"配置镜像加速",[22,751,752],{},"Docker Desktop 设置 → Docker Engine：",[69,754,758],{"className":755,"code":756,"language":757,"meta":74,"style":74},"language-json shiki shiki-themes github-light github-dark","{\n  \"registry-mirrors\": [\"https:\u002F\u002Fmirror.ccs.tencentyun.com\"]\n}\n","json",[76,759,760,765,778],{"__ignoreMap":74},[79,761,762],{"class":81,"line":82},[79,763,764],{"class":85},"{\n",[79,766,767,770,773,776],{"class":81,"line":131},[79,768,769],{"class":127},"  \"registry-mirrors\"",[79,771,772],{"class":85},": [",[79,774,775],{"class":136},"\"https:\u002F\u002Fmirror.ccs.tencentyun.com\"",[79,777,709],{"class":85},[79,779,780],{"class":81,"line":264},[79,781,782],{"class":85},"}\n",[36,784,786],{"id":785},"docker-mcp-toolkit","Docker MCP Toolkit",[22,788,789,790,792],{},"较新的 Docker Desktop 提供了 ",[165,791,786],{},"，可以把一些 MCP Server 与 Gateway 通过 Docker 方式统一管理。它很适合下面几类场景：",[44,794,795,798,801],{},[47,796,797],{},"不想在本机直接安装一堆 Node.js \u002F Python 依赖",[47,799,800],{},"团队希望共享同一套 MCP 工具环境",[47,802,803],{},"想把工具能力隔离在容器里，降低宿主机污染",[22,805,806],{},"启用相关功能后，可以先用下面的命令查看当前环境支持的 MCP 子命令：",[69,808,810],{"className":114,"code":809,"language":116,"meta":74,"style":74},"docker mcp --help\ndocker mcp server ls\ndocker mcp tools list\ndocker mcp gateway run\n",[76,811,812,822,834,846],{"__ignoreMap":74},[79,813,814,816,819],{"class":81,"line":82},[79,815,124],{"class":123},[79,817,818],{"class":136}," mcp",[79,820,821],{"class":127}," --help\n",[79,823,824,826,828,831],{"class":81,"line":131},[79,825,124],{"class":123},[79,827,818],{"class":136},[79,829,830],{"class":136}," server",[79,832,833],{"class":136}," ls\n",[79,835,836,838,840,843],{"class":81,"line":264},[79,837,124],{"class":123},[79,839,818],{"class":136},[79,841,842],{"class":136}," tools",[79,844,845],{"class":136}," list\n",[79,847,848,850,852,855],{"class":81,"line":277},[79,849,124],{"class":123},[79,851,818],{"class":136},[79,853,854],{"class":136}," gateway",[79,856,857],{"class":136}," run\n",[22,859,860],{},"如果你的 AI 客户端支持通过外部命令启动 MCP Server，也可以直接让它调用容器：",[69,862,866],{"className":863,"code":864,"language":865,"meta":74,"style":74},"language-jsonc shiki shiki-themes github-light github-dark","{\n  \"my-mcp-server\": {\n    \"command\": \"docker\",\n    \"args\": [\"run\", \"--rm\", \"-i\", \"ghcr.io\u002Facme\u002Fmy-mcp-server:latest\"]\n  }\n}\n","jsonc",[76,867,868,872,880,893,920,925],{"__ignoreMap":74},[79,869,870],{"class":81,"line":82},[79,871,764],{"class":85},[79,873,874,877],{"class":81,"line":131},[79,875,876],{"class":127},"  \"my-mcp-server\"",[79,878,879],{"class":85},": {\n",[79,881,882,885,887,890],{"class":81,"line":264},[79,883,884],{"class":127},"    \"command\"",[79,886,472],{"class":85},[79,888,889],{"class":136},"\"docker\"",[79,891,892],{"class":85},",\n",[79,894,895,898,900,903,905,908,910,913,915,918],{"class":81,"line":277},[79,896,897],{"class":127},"    \"args\"",[79,899,772],{"class":85},[79,901,902],{"class":136},"\"run\"",[79,904,703],{"class":85},[79,906,907],{"class":136},"\"--rm\"",[79,909,703],{"class":85},[79,911,912],{"class":136},"\"-i\"",[79,914,703],{"class":85},[79,916,917],{"class":136},"\"ghcr.io\u002Facme\u002Fmy-mcp-server:latest\"",[79,919,709],{"class":85},[79,921,922],{"class":81,"line":291},[79,923,924],{"class":85},"  }\n",[79,926,927],{"class":81,"line":387},[79,928,782],{"class":85},[22,930,931],{},"这样做的好处是：客户端不需要关心宿主机上是否安装了 Python、Node.js、SQLite 或其他依赖，容器镜像本身就封装了运行环境。",[22,933,934,935,939],{},"更多 MCP 基础概念、客户端配置位置和常见服务器示例，可继续看 ",[25,936,938],{"href":937},"\u002Fdocs\u002Fmcp-guide","MCP 模型上下文协议","。",[36,941,942],{"id":942},"常见问题",[944,945,947],"h3",{"id":946},"docker-desktop-启动后命令不可用","Docker Desktop 启动后命令不可用",[44,949,950,953,958],{},[47,951,952],{},"先确认系统托盘里的 Docker Desktop 已完全启动",[47,954,955,956],{},"再重新开一个终端执行 ",[76,957,180],{},[47,959,960],{},"如果只是在 WSL 内不可用，检查对应发行版的 WSL Integration 是否已开启",[944,962,964],{"id":963},"容器能起但文件监听很慢","容器能起，但文件监听很慢",[22,966,967],{},"这通常是代码放在 Windows 文件系统里，再从 WSL 或容器挂载导致的。更稳妥的做法是把活跃项目放进 WSL 的 Linux 文件系统中。",[944,969,970],{"id":970},"端口冲突",[22,972,973,974,977,978,977,981,984],{},"如果 ",[76,975,976],{},"3000","、",[76,979,980],{},"5432",[76,982,983],{},"6379"," 已被占用，先用：",[69,986,988],{"className":114,"code":987,"language":116,"meta":74,"style":74},"docker ps\nss -tlnp\n",[76,989,990,997],{"__ignoreMap":74},[79,991,992,994],{"class":81,"line":82},[79,993,124],{"class":123},[79,995,996],{"class":136}," ps\n",[79,998,999,1002],{"class":81,"line":131},[79,1000,1001],{"class":123},"ss",[79,1003,1004],{"class":127}," -tlnp\n",[22,1006,1007],{},"确认是宿主机服务冲突还是已有容器冲突，再决定换端口还是停掉旧服务。",[944,1009,1010],{"id":1010},"清理空间时误删数据",[22,1012,1013,1016],{},[76,1014,1015],{},"docker system prune -a"," 很好用，但它会清掉未使用资源。执行前先区分：",[44,1018,1019,1022,1025],{},[47,1020,1021],{},"镜像能不能重新拉",[47,1023,1024],{},"卷里是不是有数据库或上传数据",[47,1026,1027],{},"当前项目是不是还依赖某些 stopped 容器保留状态",[36,1029,1030],{"id":1030},"延伸阅读",[44,1032,1033,1039,1045,1051,1057,1063],{},[47,1034,1035],{},[25,1036,1038],{"href":1037},"\u002Fdocs\u002Fdocker-compose-recipes","Docker Compose 常用配方",[47,1040,1041],{},[25,1042,1044],{"href":1043},"\u002Fsetup","Windows 重装部署清单",[47,1046,1047],{},[25,1048,1050],{"href":1049},"\u002Fdocs\u002Fwindows-machine-log","Windows 重装部署清单（详情）",[47,1052,1053],{},[25,1054,1056],{"href":1055},"\u002Fdocs\u002Flocal-setup","本地开发环境搭建",[47,1058,1059],{},[25,1060,1062],{"href":1061},"\u002Fdocs\u002Fnginx-basics","Nginx 基础配置",[47,1064,1065],{},[25,1066,1068],{"href":1067},"\u002Fdocs\u002Fmonitoring-logging","监控与日志",[36,1070,1071],{"id":1071},"参考链接",[44,1073,1074,1081,1089,1097,1105,1112,1120,1128],{},[47,1075,1076,1080],{},[25,1077,1079],{"href":27,"rel":1078},[29],"Docker 官网"," — 产品与文档",[47,1082,1083,1088],{},[25,1084,1087],{"href":1085,"rel":1086},"https:\u002F\u002Fhub.docker.com\u002F",[29],"Docker Hub"," — 镜像仓库",[47,1090,1091,1096],{},[25,1092,1095],{"href":1093,"rel":1094},"https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F",[29],"Docker Desktop"," — 下载",[47,1098,1099,1104],{},[25,1100,1103],{"href":1101,"rel":1102},"https:\u002F\u002Fdocs.docker.com\u002Fdesktop\u002Ffeatures\u002Fwsl\u002F",[29],"Docker Desktop WSL 2 后端文档"," — 官方配置说明",[47,1106,1107,1111],{},[25,1108,786],{"href":1109,"rel":1110},"https:\u002F\u002Fdocs.docker.com\u002Fai\u002Fmcp-catalog-and-toolkit\u002Ftoolkit\u002F",[29]," — Docker 对 MCP 的支持",[47,1113,1114,1119],{},[25,1115,1118],{"href":1116,"rel":1117},"https:\u002F\u002Fgithub.com\u002Fmoby\u002Fmoby",[29],"Docker GitHub"," — 源码（Moby）",[47,1121,1122,1127],{},[25,1123,1126],{"href":1124,"rel":1125},"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002F",[29],"Docker Compose 文档"," — 官方指南",[47,1129,1130,1135],{},[25,1131,1134],{"href":1132,"rel":1133},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fdockerfile\u002F",[29],"Dockerfile 参考"," — 语法说明",[1137,1138,1139],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .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}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":74,"searchDepth":131,"depth":131,"links":1141},[1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1160,1161],{"id":38,"depth":131,"text":39},{"id":64,"depth":131,"text":64},{"id":96,"depth":131,"text":96},{"id":143,"depth":131,"text":144},{"id":198,"depth":131,"text":198},{"id":232,"depth":131,"text":232},{"id":307,"depth":131,"text":307},{"id":435,"depth":131,"text":436},{"id":584,"depth":131,"text":584},{"id":627,"depth":131,"text":628},{"id":749,"depth":131,"text":749},{"id":785,"depth":131,"text":786},{"id":942,"depth":131,"text":942,"children":1155},[1156,1157,1158,1159],{"id":946,"depth":264,"text":947},{"id":963,"depth":264,"text":964},{"id":970,"depth":264,"text":970},{"id":1010,"depth":264,"text":1010},{"id":1030,"depth":131,"text":1030},{"id":1071,"depth":131,"text":1071},{"path":1163,"title":1164,"description":1165,"docType":8,"resourceKind":9,"categoryId":1166,"categoryLabel":1167,"updatedAt":1168,"publishedAt":1168,"icon":1169},"\u002Fdocs\u002Fdev-environment","Windows 开发环境搭建","从零搭建 Windows 开发环境的完整流程，涵盖编辑器、运行时、终端美化、WSL 等","dev-environment","开发环境","2025-11-08","i-carbon-code",{"path":1171,"title":1172,"description":1173,"docType":8,"resourceKind":9,"categoryId":1166,"categoryLabel":1167,"updatedAt":1174,"publishedAt":1174,"icon":1169},"\u002Fdocs\u002Fterminal-setup","终端配置与美化","Windows Terminal 配置、PowerShell 美化、Oh My Posh 主题与 PSReadLine 增强","2025-10-22",[1176,1177,1178],"希望把零散经验整理成长期可复用工作流的人","想先建立认知，再决定是否深入实践的人","希望阅读时顺手建立自己的操作清单或收藏体系的人",[1180,1181,1182],"先浏览标题、摘要和目录，带着问题阅读会更高效","顺手记录真正对你有用的命令、链接和注意事项，避免重复搜索","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[1184,1189,1193,1196],{"path":1185,"title":1186,"description":1187,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1188,"publishedAt":1188,"icon":13},"\u002Fdocs\u002Fcloudflare-pages-deploy","Cloudflare Pages 部署指南","Cloudflare Pages 项目部署、自定义域名、环境变量、重定向与 Functions","2026-02-28",{"path":1190,"title":1191,"description":1192,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1188,"publishedAt":1188,"icon":13},"\u002Fdocs\u002Fs3-storage","S3 对象存储","S3 兼容存储使用、Cloudflare R2、MinIO 自建、rclone 同步与 SDK 集成",{"path":1067,"title":1068,"description":1194,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1195,"publishedAt":1195,"icon":13},"服务器监控工具、日志管理、Uptime 监控与告警配置","2026-02-27",{"path":1197,"title":1198,"description":1199,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1195,"publishedAt":1195,"icon":13},"\u002Fdocs\u002Fcontainer-orchestration","容器编排入门","Docker Swarm 与 Kubernetes 基础概念、常用命令与本地开发环境",1776215712942]