[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-intro":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-intro":1431,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-intro":1451},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":13,"pinned":14,"draft":14,"body":15,"seo":1427,"stem":1428,"id":1429,"extension":1430},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-intro","Docker 基础概念、安装与命令速查","Docker 是一个开源的容器化平台，能将应用程序及其所有依赖打包成轻量级、可移植的容器。本文介绍核心概念、底层原理、跨平台安装配置，并附完整的命令速查表，是学习 Docker 的第一篇。","技能小册",[12],"docker","2026-07-23",false,{"type":16,"value":17,"toc":1408},"minimark",[18,22,40,45,123,127,130,140,178,182,185,239,247,251,280,284,379,385,389,395,398,402,407,435,439,456,571,587,591,643,647,650,794,817,820,824,827,1075,1079,1272,1304,1308,1343,1346,1404],[19,20,8],"h1",{"id":21},"docker-基础概念安装与命令速查",[23,24,25,29,30,35,36,39],"p",{},[26,27,28],"strong",{},"Docker"," 是一个开源的容器化平台。学习路径见 ",[31,32,34],"a",{"href":33},"\u002Fknowledge\u002Fbooklet\u002Fuphold","运维导读","。它允许开发者将应用程序及其所有依赖（代码、运行时、库、配置文件等）打包成一个",[26,37,38],{},"轻量级、可移植","的容器，从而在任何支持 Docker 的环境中一致运行——「一次构建，到处运行」。",[41,42,44],"h2",{"id":43},"一核心组件","一、核心组件",[46,47,48,61],"table",{},[49,50,51],"thead",{},[52,53,54,58],"tr",{},[55,56,57],"th",{},"组件",[55,59,60],{},"说明",[62,63,64,75,85,95,113],"tbody",{},[52,65,66,72],{},[67,68,69],"td",{},[26,70,71],{},"镜像（Image）",[67,73,74],{},"只读模板，包含运行应用所需的一切（操作系统层、代码、环境变量、启动命令）。类似于「类」或「安装包」。",[52,76,77,82],{},[67,78,79],{},[26,80,81],{},"容器（Container）",[67,83,84],{},"镜像的运行实例，是一个隔离的进程空间。可以被创建、启动、停止、删除。类似于「对象」。",[52,86,87,92],{},[67,88,89],{},[26,90,91],{},"仓库（Repository）",[67,93,94],{},"存储和分发镜像的地方。公共仓库如 Docker Hub，私有仓库如 Harbor。",[52,96,97,102],{},[67,98,99],{},[26,100,101],{},"Docker 引擎（Engine）",[67,103,104,105,109,110,112],{},"服务端守护进程（",[106,107,108],"code",{},"dockerd","）+ REST API + 客户端（",[106,111,12],{}," CLI）。负责管理容器、镜像、网络等。",[52,114,115,120],{},[67,116,117],{},[26,118,119],{},"Registry",[67,121,122],{},"镜像仓库服务，Docker Hub 是默认公共 Registry，一个 Registry 内可有多个 Repository。",[41,124,126],{"id":125},"二docker-架构client-server-模型","二、Docker 架构：Client-Server 模型",[23,128,129],{},"Docker 采用客户端-服务端架构：",[131,132,137],"pre",{"className":133,"code":135,"language":136},[134],"language-text","docker CLI（客户端）\n   │  REST API（通常经 Unix Socket 或 TCP）\n   ▼\ndockerd（守护进程，服务端）\n   │\n   ├── containerd（容器生命周期管理）\n   │      └── runc（OCI 标准运行时，实际创建容器进程）\n   ├── 镜像管理、构建（BuildKit）\n   └── 网络、数据卷管理\n","text",[106,138,135],{"__ignoreMap":139},"",[141,142,143,158,165],"ul",{},[144,145,146,147,150,151,154,155,157],"li",{},"日常执行的 ",[106,148,149],{},"docker run","、",[106,152,153],{},"docker build"," 等命令，本质上是客户端向 ",[106,156,108],{}," 发送 API 请求。",[144,159,160,161,164],{},"客户端和服务端可以在同一台机器，也可以通过 ",[106,162,163],{},"DOCKER_HOST"," 指向远程 Docker 主机。",[144,166,167,170,171,174,175,177],{},[106,168,169],{},"containerd"," 与 ",[106,172,173],{},"runc"," 是 CNCF 下的独立项目，Docker 只是其中一种发行方式；Kubernetes 也可以直接使用 ",[106,176,169],{}," 而不依赖完整的 Docker Engine。",[41,179,181],{"id":180},"三底层原理容器为什么这么轻量","三、底层原理：容器为什么这么轻量",[23,183,184],{},"容器并不是虚拟机，它复用宿主机内核，依赖 Linux 的几项核心机制：",[46,186,187,197],{},[49,188,189],{},[52,190,191,194],{},[55,192,193],{},"机制",[55,195,196],{},"作用",[62,198,199,209,229],{},[52,200,201,206],{},[67,202,203],{},[26,204,205],{},"Namespace（命名空间）",[67,207,208],{},"隔离视图：PID（进程号）、NET（网络）、MNT（挂载点）、UTS（主机名）、IPC、USER 等，让容器「看起来」像一个独立系统。",[52,210,211,216],{},[67,212,213],{},[26,214,215],{},"Cgroups（控制组）",[67,217,218,219,221,222,150,225,228],{},"限制资源：CPU、内存、磁盘 I\u002FO、网络带宽，防止单个容器耗尽宿主机资源（对应 ",[106,220,149],{}," 的 ",[106,223,224],{},"--memory",[106,226,227],{},"--cpus"," 等参数）。",[52,230,231,236],{},[67,232,233],{},[26,234,235],{},"联合文件系统（UnionFS \u002F OverlayFS）",[67,237,238],{},"将镜像的多个只读层与容器的一层可写层叠加挂载，多个容器可共享同一批底层镜像层，磁盘占用和启动速度都大幅优化。",[23,240,241,242,246],{},"镜像本身由若干**分层（Layer）**组成，每一条 Dockerfile 指令通常生成一层，层与层之间共享缓存，这也是 ",[31,243,245],{"href":244},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-images","Dockerfile 构建"," 能够利用缓存加速的原因。",[41,248,250],{"id":249},"四镜像与容器的关系","四、镜像与容器的关系",[141,252,253],{},[144,254,255,258,259,258,261,264],{},[26,256,257],{},"镜像"," → ",[106,260,149],{},[26,262,263],{},"容器",[141,265,266,269,272],{},[144,267,268],{},"镜像定义了容器的「内容和配置」，容器是镜像的一个可写副本（在只读镜像层之上叠加一层可写层）。",[144,270,271],{},"同一个镜像可以启动多个容器，它们相互隔离，互不影响。",[144,273,274,275,279],{},"容器被删除后，其状态（写入的文件）通常丢失，除非使用数据卷（Volume）持久化，详见 ",[31,276,278],{"href":277},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-runtime","容器、数据与网络","。",[41,281,283],{"id":282},"五docker-与虚拟机的区别","五、Docker 与虚拟机的区别",[46,285,286,299],{},[49,287,288],{},[52,289,290,293,296],{},[55,291,292],{},"特性",[55,294,295],{},"Docker 容器",[55,297,298],{},"传统虚拟机（VM）",[62,300,301,314,327,340,353,366],{},[52,302,303,308,311],{},[67,304,305],{},[26,306,307],{},"内核",[67,309,310],{},"共享宿主机内核（Linux 容器需 Linux 宿主机）",[67,312,313],{},"每个 VM 包含完整的 Guest OS（独立内核）",[52,315,316,321,324],{},[67,317,318],{},[26,319,320],{},"启动速度",[67,322,323],{},"秒级（甚至毫秒级）",[67,325,326],{},"分钟级（需引导操作系统）",[52,328,329,334,337],{},[67,330,331],{},[26,332,333],{},"资源占用",[67,335,336],{},"轻量（只包含应用及其依赖，通常几十 MB）",[67,338,339],{},"重量（每个 VM 占用数 GB 磁盘和内存）",[52,341,342,347,350],{},[67,343,344],{},[26,345,346],{},"隔离级别",[67,348,349],{},"进程级隔离（Namespace + Cgroups）",[67,351,352],{},"硬件级虚拟化（Hypervisor，完全隔离）",[52,354,355,360,363],{},[67,356,357],{},[26,358,359],{},"性能",[67,361,362],{},"接近原生（几乎没有虚拟化开销）",[67,364,365],{},"有一定性能损耗（Hypervisor 转换）",[52,367,368,373,376],{},[67,369,370],{},[26,371,372],{},"迁移\u002F复制",[67,374,375],{},"迁移镜像（分层存储，高效）",[67,377,378],{},"复制整个 VM 镜像（体积大）",[23,380,381,384],{},[26,382,383],{},"总结","：Docker 容器更轻、更快、更节省资源，适用于微服务、持续集成、弹性伸缩等场景；虚拟机提供更强的隔离和安全性，适合多租户、异构操作系统等场景。两者也可以组合使用（如在云主机 VM 中运行多个容器）。",[41,386,388],{"id":387},"六docker-工作流简图","六、Docker 工作流简图",[131,390,393],{"className":391,"code":392,"language":136},[134],"Dockerfile (构建指令)\n   ↓ docker build\n镜像 (Image)\n   ↓ docker run\n容器 (Container)\n   ↓ docker push \u002F pull\n仓库 (Registry)\n",[106,394,392],{"__ignoreMap":139},[23,396,397],{},"理解这些核心概念，是学习 Docker 命令和编排工具（如 Docker Compose、Kubernetes）的基础。",[41,399,401],{"id":400},"七安装与配置","七、安装与配置",[403,404,406],"h3",{"id":405},"_1-windows-macos","1. Windows \u002F macOS",[141,408,409,422,425],{},[144,410,411,412,415,416,421],{},"下载 ",[26,413,414],{},"Docker Desktop","（",[31,417,418],{"href":418,"rel":419},"https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F",[420],"nofollow","）。",[144,423,424],{},"运行安装程序，按向导完成安装（Windows 可能需要启用 WSL 2 或 Hyper-V；Apple Silicon 与 Intel 芯片各有对应安装包）。",[144,426,427,428,431,432,421],{},"安装后启动 Docker Desktop，任务栏\u002F菜单栏出现 Docker 图标即表示运行中，Docker Desktop 已自带 ",[106,429,430],{},"docker compose","（v2，无需再单独安装 ",[106,433,434],{},"docker-compose",[403,436,438],{"id":437},"_2-linuxubuntu-debian","2. Linux（Ubuntu \u002F Debian）",[23,440,441,442,447,448,451,452,455],{},"生产环境建议按 ",[31,443,446],{"href":444,"rel":445},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Fubuntu\u002F",[420],"Docker 官方安装文档"," 使用 ",[106,449,450],{},"docker-ce"," 仓库；以下为常见 ",[106,453,454],{},"docker.io"," 包方式（版本可能略旧，仅适合快速体验）：",[131,457,461],{"className":458,"code":459,"language":460,"meta":139,"style":139},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","sudo apt update\nsudo apt install docker.io -y\n\n# 启动 Docker 服务并设置开机自启\nsudo systemctl start docker\nsudo systemctl enable docker\n\n# 将当前用户加入 docker 组（避免每次输入 sudo）\nsudo usermod -aG docker $USER\n# 重新登录或执行 newgrp docker 使组生效\n","bash",[106,462,463,479,496,503,510,524,536,541,547,565],{"__ignoreMap":139},[464,465,468,472,476],"span",{"class":466,"line":467},"line",1,[464,469,471],{"class":470},"sbgvK","sudo",[464,473,475],{"class":474},"s_sjI"," apt",[464,477,478],{"class":474}," update\n",[464,480,482,484,486,489,492],{"class":466,"line":481},2,[464,483,471],{"class":470},[464,485,475],{"class":474},[464,487,488],{"class":474}," install",[464,490,491],{"class":474}," docker.io",[464,493,495],{"class":494},"stzsN"," -y\n",[464,497,499],{"class":466,"line":498},3,[464,500,502],{"emptyLinePlaceholder":501},true,"\n",[464,504,506],{"class":466,"line":505},4,[464,507,509],{"class":508},"sutJx","# 启动 Docker 服务并设置开机自启\n",[464,511,513,515,518,521],{"class":466,"line":512},5,[464,514,471],{"class":470},[464,516,517],{"class":474}," systemctl",[464,519,520],{"class":474}," start",[464,522,523],{"class":474}," docker\n",[464,525,527,529,531,534],{"class":466,"line":526},6,[464,528,471],{"class":470},[464,530,517],{"class":474},[464,532,533],{"class":474}," enable",[464,535,523],{"class":474},[464,537,539],{"class":466,"line":538},7,[464,540,502],{"emptyLinePlaceholder":501},[464,542,544],{"class":466,"line":543},8,[464,545,546],{"class":508},"# 将当前用户加入 docker 组（避免每次输入 sudo）\n",[464,548,550,552,555,558,561],{"class":466,"line":549},9,[464,551,471],{"class":470},[464,553,554],{"class":474}," usermod",[464,556,557],{"class":494}," -aG",[464,559,560],{"class":474}," docker",[464,562,564],{"class":563},"su5hD"," $USER\n",[464,566,568],{"class":466,"line":567},10,[464,569,570],{"class":508},"# 重新登录或执行 newgrp docker 使组生效\n",[23,572,573,574,576,577,580,581,583,584,279],{},"若使用官方 ",[106,575,450],{}," 仓库安装，还会附带 ",[106,578,579],{},"docker-compose-plugin","（即 ",[106,582,430],{}," 子命令）与 ",[106,585,586],{},"docker-buildx-plugin",[403,588,590],{"id":589},"_3-验证安装","3. 验证安装",[131,592,594],{"className":458,"code":593,"language":460,"meta":139,"style":139},"docker --version\n# 示例输出：Docker version 24.0.7, build afdd53b\n\ndocker info\n# 查看服务端详细信息：存储驱动、Cgroup 版本、根目录等\n\ndocker run hello-world\n# 拉取并运行测试镜像，输出欢迎信息即表示安装成功\n",[106,595,596,603,608,612,619,624,628,638],{"__ignoreMap":139},[464,597,598,600],{"class":466,"line":467},[464,599,12],{"class":470},[464,601,602],{"class":494}," --version\n",[464,604,605],{"class":466,"line":481},[464,606,607],{"class":508},"# 示例输出：Docker version 24.0.7, build afdd53b\n",[464,609,610],{"class":466,"line":498},[464,611,502],{"emptyLinePlaceholder":501},[464,613,614,616],{"class":466,"line":505},[464,615,12],{"class":470},[464,617,618],{"class":474}," info\n",[464,620,621],{"class":466,"line":512},[464,622,623],{"class":508},"# 查看服务端详细信息：存储驱动、Cgroup 版本、根目录等\n",[464,625,626],{"class":466,"line":526},[464,627,502],{"emptyLinePlaceholder":501},[464,629,630,632,635],{"class":466,"line":538},[464,631,12],{"class":470},[464,633,634],{"class":474}," run",[464,636,637],{"class":474}," hello-world\n",[464,639,640],{"class":466,"line":543},[464,641,642],{"class":508},"# 拉取并运行测试镜像，输出欢迎信息即表示安装成功\n",[403,644,646],{"id":645},"_4-配置镜像加速国内推荐","4. 配置镜像加速（国内推荐）",[23,648,649],{},"由于网络原因，从 Docker Hub 拉取镜像可能较慢。可配置国内镜像加速器（以 Linux 为例）。",[651,652,653,733,755],"ol",{},[144,654,655,661,662],{},[26,656,657,658],{},"创建或修改 ",[106,659,660],{},"\u002Fetc\u002Fdocker\u002Fdaemon.json","（需要 sudo 权限）：",[131,663,665],{"className":458,"code":664,"language":460,"meta":139,"style":139},"sudo mkdir -p \u002Fetc\u002Fdocker\nsudo tee \u002Fetc\u002Fdocker\u002Fdaemon.json \u003C\u003C-'EOF'\n{\n  \"registry-mirrors\": [\n    \"https:\u002F\u002Fdocker.mirrors.ustc.edu.cn\",\n    \"https:\u002F\u002Fhub-mirror.c.163.com\"\n  ]\n}\nEOF\n",[106,666,667,680,698,703,708,713,718,723,728],{"__ignoreMap":139},[464,668,669,671,674,677],{"class":466,"line":467},[464,670,471],{"class":470},[464,672,673],{"class":474}," mkdir",[464,675,676],{"class":494}," -p",[464,678,679],{"class":474}," \u002Fetc\u002Fdocker\n",[464,681,682,684,687,690,694],{"class":466,"line":481},[464,683,471],{"class":470},[464,685,686],{"class":474}," tee",[464,688,689],{"class":474}," \u002Fetc\u002Fdocker\u002Fdaemon.json",[464,691,693],{"class":692},"smGrS"," \u003C\u003C-",[464,695,697],{"class":696},"sjJ54","'EOF'\n",[464,699,700],{"class":466,"line":498},[464,701,702],{"class":474},"{\n",[464,704,705],{"class":466,"line":505},[464,706,707],{"class":474},"  \"registry-mirrors\": [\n",[464,709,710],{"class":466,"line":512},[464,711,712],{"class":474},"    \"https:\u002F\u002Fdocker.mirrors.ustc.edu.cn\",\n",[464,714,715],{"class":466,"line":526},[464,716,717],{"class":474},"    \"https:\u002F\u002Fhub-mirror.c.163.com\"\n",[464,719,720],{"class":466,"line":538},[464,721,722],{"class":474},"  ]\n",[464,724,725],{"class":466,"line":543},[464,726,727],{"class":474},"}\n",[464,729,730],{"class":466,"line":549},[464,731,732],{"class":696},"EOF\n",[144,734,735,738,739],{},[26,736,737],{},"重启 Docker 服务","：",[131,740,742],{"className":458,"code":741,"language":460,"meta":139,"style":139},"sudo systemctl restart docker\n",[106,743,744],{"__ignoreMap":139},[464,745,746,748,750,753],{"class":466,"line":467},[464,747,471],{"class":470},[464,749,517],{"class":474},[464,751,752],{"class":474}," restart",[464,754,523],{"class":474},[144,756,757,738,760],{},[26,758,759],{},"验证配置是否生效",[131,761,763],{"className":458,"code":762,"language":460,"meta":139,"style":139},"docker info | grep -A 1 \"Registry Mirrors\"\n",[106,764,765],{"__ignoreMap":139},[464,766,767,769,772,775,778,781,785,788,791],{"class":466,"line":467},[464,768,12],{"class":470},[464,770,771],{"class":474}," info",[464,773,774],{"class":692}," |",[464,776,777],{"class":470}," grep",[464,779,780],{"class":494}," -A",[464,782,784],{"class":783},"srdBf"," 1",[464,786,787],{"class":696}," \"",[464,789,790],{"class":474},"Registry Mirrors",[464,792,793],{"class":696},"\"\n",[795,796,797,801],"blockquote",{},[23,798,799,738],{},[26,800,60],{},[141,802,803,810],{},[144,804,805,806,809],{},"Windows \u002F macOS 用户：打开 Docker Desktop 设置 → Docker Engine，在 JSON 配置中添加 ",[106,807,808],{},"\"registry-mirrors\""," 数组，然后点击「Apply & Restart」。",[144,811,812,813,816],{},"镜像加速地址会随时间失效，建议使用前先测试可用性；无法访问时可考虑改用 ",[106,814,815],{},"docker pull"," 配合代理，或使用自建\u002F云厂商镜像仓库。",[23,818,819],{},"完成上述步骤后，即可正常使用 Docker 拉取镜像和运行容器。",[41,821,823],{"id":822},"八常用命令速查表","八、常用命令速查表",[23,825,826],{},"下表汇总了 Docker 最常用的命令，涵盖镜像、容器、网络、构建及清理等操作，日常开发基本够用。",[46,828,829,841],{},[49,830,831],{},[52,832,833,836,839],{},[55,834,835],{},"操作",[55,837,838],{},"命令",[55,840,60],{},[62,842,843,859,872,889,914,927,940,953,966,982,999,1019,1032,1045,1062],{},[52,844,845,848,853],{},[67,846,847],{},"拉取镜像",[67,849,850],{},[106,851,852],{},"docker pull \u003Cimage>",[67,854,855,856],{},"从仓库下载镜像（默认 Docker Hub），可指定标签如 ",[106,857,858],{},"nginx:1.25",[52,860,861,864,869],{},[67,862,863],{},"列出镜像",[67,865,866],{},[106,867,868],{},"docker images",[67,870,871],{},"显示本地所有镜像，包含仓库、标签、ID、大小等",[52,873,874,877,882],{},[67,875,876],{},"删除镜像",[67,878,879],{},[106,880,881],{},"docker rmi \u003Cimage>",[67,883,884,885,888],{},"删除本地镜像，可用镜像名或 ID；",[106,886,887],{},"-f"," 强制删除",[52,890,891,894,899],{},[67,892,893],{},"运行容器",[67,895,896],{},[106,897,898],{},"docker run -d --name \u003Cname> -p 8080:80 \u003Cimage>",[67,900,901,902,905,906,909,910,913],{},"创建并启动容器，",[106,903,904],{},"-d"," 后台，",[106,907,908],{},"--name"," 命名，",[106,911,912],{},"-p"," 端口映射",[52,915,916,919,924],{},[67,917,918],{},"查看运行中容器",[67,920,921],{},[106,922,923],{},"docker ps",[67,925,926],{},"只显示正在运行的容器",[52,928,929,932,937],{},[67,930,931],{},"查看所有容器",[67,933,934],{},[106,935,936],{},"docker ps -a",[67,938,939],{},"显示所有容器，包括已停止的",[52,941,942,945,950],{},[67,943,944],{},"停止容器",[67,946,947],{},[106,948,949],{},"docker stop \u003Cname>",[67,951,952],{},"优雅停止运行中的容器（发送 SIGTERM）",[52,954,955,958,963],{},[67,956,957],{},"启动容器",[67,959,960],{},[106,961,962],{},"docker start \u003Cname>",[67,964,965],{},"启动已停止的容器",[52,967,968,971,976],{},[67,969,970],{},"删除容器",[67,972,973],{},[106,974,975],{},"docker rm \u003Cname>",[67,977,978,979,981],{},"删除已停止的容器；",[106,980,887],{}," 强制删除运行中的",[52,983,984,987,992],{},[67,985,986],{},"进入容器",[67,988,989],{},[106,990,991],{},"docker exec -it \u003Cname> \u002Fbin\u002Fbash",[67,993,994,995,998],{},"在运行中的容器内启动交互式 shell（或用 ",[106,996,997],{},"\u002Fbin\u002Fsh","）",[52,1000,1001,1004,1009],{},[67,1002,1003],{},"查看日志",[67,1005,1006],{},[106,1007,1008],{},"docker logs -f \u003Cname>",[67,1010,1011,1012,1014,1015,1018],{},"跟踪容器日志输出，",[106,1013,887],{}," 实时刷新，可加 ",[106,1016,1017],{},"--tail"," 限制行数",[52,1020,1021,1024,1029],{},[67,1022,1023],{},"复制文件",[67,1025,1026],{},[106,1027,1028],{},"docker cp \u003Csrc> \u003Cdest>",[67,1030,1031],{},"在宿主机和容器之间复制文件或目录",[52,1033,1034,1037,1042],{},[67,1035,1036],{},"创建网络",[67,1038,1039],{},[106,1040,1041],{},"docker network create \u003Cnet>",[67,1043,1044],{},"创建自定义桥接网络，便于容器间通过容器名通信",[52,1046,1047,1050,1055],{},[67,1048,1049],{},"构建镜像",[67,1051,1052],{},[106,1053,1054],{},"docker build -t \u003Cname>:tag .",[67,1056,1057,1058,1061],{},"根据当前目录的 Dockerfile 构建镜像，",[106,1059,1060],{},"-t"," 指定名称和标签",[52,1063,1064,1067,1072],{},[67,1065,1066],{},"清理悬空资源",[67,1068,1069],{},[106,1070,1071],{},"docker system prune",[67,1073,1074],{},"删除所有未使用的容器、网络、悬空镜像和构建缓存（需确认）",[403,1076,1078],{"id":1077},"进阶命令扩展","进阶命令（扩展）",[46,1080,1081,1091],{},[49,1082,1083],{},[52,1084,1085,1087,1089],{},[55,1086,835],{},[55,1088,838],{},[55,1090,60],{},[62,1092,1093,1106,1119,1139,1155,1171,1184,1201,1217,1230,1243,1256],{},[52,1094,1095,1098,1103],{},[67,1096,1097],{},"查看资源占用",[67,1099,1100],{},[106,1101,1102],{},"docker stats",[67,1104,1105],{},"实时查看所有容器的 CPU、内存、网络、I\u002FO 使用情况",[52,1107,1108,1111,1116],{},[67,1109,1110],{},"查看磁盘占用",[67,1112,1113],{},[106,1114,1115],{},"docker system df",[67,1117,1118],{},"按镜像\u002F容器\u002F卷\u002F构建缓存汇总磁盘占用",[52,1120,1121,1124,1133],{},[67,1122,1123],{},"登录\u002F登出仓库",[67,1125,1126,1129,1130],{},[106,1127,1128],{},"docker login"," \u002F ",[106,1131,1132],{},"docker logout",[67,1134,1135,1136],{},"登录 Docker Hub 或私有 Registry 后才能 ",[106,1137,1138],{},"push",[52,1140,1141,1144,1152],{},[67,1142,1143],{},"导出\u002F导入镜像",[67,1145,1146,1129,1149],{},[106,1147,1148],{},"docker save -o app.tar \u003Cimage>",[106,1150,1151],{},"docker load -i app.tar",[67,1153,1154],{},"离线迁移镜像（不经过 Registry）",[52,1156,1157,1160,1168],{},[67,1158,1159],{},"导出\u002F导入容器",[67,1161,1162,1129,1165],{},[106,1163,1164],{},"docker export \u003Cname> > app.tar",[106,1166,1167],{},"docker import app.tar",[67,1169,1170],{},"导出容器文件系统为一层新镜像（丢失历史层与元数据）",[52,1172,1173,1176,1181],{},[67,1174,1175],{},"查看文件变化",[67,1177,1178],{},[106,1179,1180],{},"docker diff \u003Cname>",[67,1182,1183],{},"列出容器相对镜像新增、修改、删除的文件",[52,1185,1186,1189,1194],{},[67,1187,1188],{},"挂接标准输入输出",[67,1190,1191],{},[106,1192,1193],{},"docker attach \u003Cname>",[67,1195,1196,1197,1200],{},"挂接到容器主进程的终端（",[106,1198,1199],{},"Ctrl+P Ctrl+Q"," 安全退出，避免终止容器）",[52,1202,1203,1206,1214],{},[67,1204,1205],{},"暂停\u002F恢复容器",[67,1207,1208,1129,1211],{},[106,1209,1210],{},"docker pause \u003Cname>",[106,1212,1213],{},"docker unpause \u003Cname>",[67,1215,1216],{},"冻结容器内所有进程（基于 cgroup freezer），常用于临时让出资源",[52,1218,1219,1222,1227],{},[67,1220,1221],{},"强制终止",[67,1223,1224],{},[106,1225,1226],{},"docker kill \u003Cname>",[67,1228,1229],{},"立即发送 SIGKILL，不等待优雅退出",[52,1231,1232,1235,1240],{},[67,1233,1234],{},"动态调整资源",[67,1236,1237],{},[106,1238,1239],{},"docker update --memory 512m \u003Cname>",[67,1241,1242],{},"运行时调整容器的 CPU\u002F内存限制，无需重建容器",[52,1244,1245,1248,1253],{},[67,1246,1247],{},"查看事件流",[67,1249,1250],{},[106,1251,1252],{},"docker events",[67,1254,1255],{},"实时输出 Docker 守护进程的事件（创建、启动、销毁等），便于监控与调试",[52,1257,1258,1261,1269],{},[67,1259,1260],{},"切换 Docker 上下文",[67,1262,1263,1129,1266],{},[106,1264,1265],{},"docker context ls",[106,1267,1268],{},"docker context use \u003Cname>",[67,1270,1271],{},"管理多个 Docker 守护进程连接（本地、远程、云端）",[795,1273,1274,1279],{},[23,1275,1276,738],{},[26,1277,1278],{},"提示",[141,1280,1281,1284,1294],{},[144,1282,1283],{},"许多命令支持使用容器名或容器 ID（可用前几位唯一前缀）。",[144,1285,1286,1287,1290,1291,279],{},"使用 ",[106,1288,1289],{},"--help"," 查看每个命令的详细选项，如 ",[106,1292,1293],{},"docker run --help",[144,1295,1296,1297,1299,1300,1303],{},"清理前建议用 ",[106,1298,1115],{}," 查看磁盘占用情况，",[106,1301,1302],{},"docker system prune -a"," 会额外清理未被任何容器引用的镜像，请谨慎使用。",[41,1305,1307],{"id":1306},"九小结","九、小结",[141,1309,1310,1313,1328,1331],{},[144,1311,1312],{},"Docker 通过 Namespace 隔离视图、Cgroups 限制资源、联合文件系统实现分层存储，从而做到「秒级启动、几十 MB 占用」。",[144,1314,1315,1316,1318,1319,1321,1322,1324,1325,1327],{},"客户端-服务端架构（",[106,1317,12],{}," CLI ↔ ",[106,1320,108],{}," ↔ ",[106,1323,169],{},"\u002F",[106,1326,173],{},"）是理解 Docker 命令背后发生了什么的关键。",[144,1329,1330],{},"安装完成后优先配置镜像加速，再通过命令速查表覆盖日常的镜像、容器、网络、清理操作。",[144,1332,1333,1334,150,1337,150,1339,279],{},"后续深入内容见 ",[31,1335,1336],{"href":244},"镜像与 Dockerfile",[31,1338,278],{"href":277},[31,1340,1342],{"href":1341},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-compose","Docker Compose",[41,1344,1345],{"id":1345},"参考文献",[46,1347,1348,1357],{},[49,1349,1350],{},[52,1351,1352,1355],{},[55,1353,1354],{},"资料",[55,1356,60],{},[62,1358,1359,1371,1383,1395],{},[52,1360,1361,1368],{},[67,1362,1363],{},[31,1364,1367],{"href":1365,"rel":1366},"https:\u002F\u002Fdocs.docker.com\u002Fget-started\u002Fdocker-overview\u002F",[420],"Docker 概览",[67,1369,1370],{},"官方",[52,1372,1373,1380],{},[67,1374,1375],{},[31,1376,1379],{"href":1377,"rel":1378},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002F",[420],"Docker 命令参考",[67,1381,1382],{},"官方 CLI 手册",[52,1384,1385,1392],{},[67,1386,1387],{},[31,1388,1391],{"href":1389,"rel":1390},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F",[420],"Docker Engine 安装",[67,1393,1394],{},"各平台安装指南",[52,1396,1397,1401],{},[67,1398,1399],{},[31,1400,34],{"href":33},[67,1402,1403],{},"本目录路径",[1405,1406,1407],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":139,"searchDepth":481,"depth":481,"links":1409},[1410,1411,1412,1413,1414,1415,1416,1422,1425,1426],{"id":43,"depth":481,"text":44},{"id":125,"depth":481,"text":126},{"id":180,"depth":481,"text":181},{"id":249,"depth":481,"text":250},{"id":282,"depth":481,"text":283},{"id":387,"depth":481,"text":388},{"id":400,"depth":481,"text":401,"children":1417},[1418,1419,1420,1421],{"id":405,"depth":498,"text":406},{"id":437,"depth":498,"text":438},{"id":589,"depth":498,"text":590},{"id":645,"depth":498,"text":646},{"id":822,"depth":481,"text":823,"children":1423},[1424],{"id":1077,"depth":498,"text":1078},{"id":1306,"depth":481,"text":1307},{"id":1345,"depth":481,"text":1345},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fuphold\u002FDocker\u002Fdocker-intro","knowledge\u002Fknowledge\u002Fbooklet\u002Fuphold\u002FDocker\u002Fdocker-intro.md","md",{"items":1432},[1433,1436,1438,1440,1443,1447],{"path":1341,"title":1434,"description":1435,"category":10,"score":526},"Docker Compose 编排","Docker Compose 是定义和运行多容器 Docker 应用的工具，通过一个 compose.yml 文件即可管理 Web、数据库、缓存等多个服务。本文覆盖安装、完整字段说明、多服务示例、常用指令与常见排错。",{"path":244,"title":1336,"description":1437,"category":10,"score":526},"镜像（Image）是 Docker 容器的只读模板，Dockerfile 则是构建镜像的蓝图。本文完整覆盖镜像的搜索、拉取、查看、删除、打标签、推送，以及 Dockerfile 常用指令、多阶段构建与体积优化技巧。",{"path":277,"title":278,"description":1439,"category":10,"score":526},"容器是镜像的运行实例，掌握容器的创建、管理、日志查看，配合数据卷持久化与自定义网络通信，是使用 Docker 的日常核心，也是生产部署前必须掌握的三大基础能力。",{"path":33,"title":1441,"description":1442,"category":10,"score":505},"运维与协作导读","本目录覆盖日常开发运维中的 Git 版本控制、Docker 容器化与 Nginx 服务网关，与 工程化 · Git、部署相关 等章节互补，提供完整的十阶段学习路径。",{"path":1444,"title":1445,"description":1446,"category":10,"score":467},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbasics","后端入门概览","本目录覆盖 JavaScript\u002FTypeScript 服务端运行时与框架、数据存储，以及 Rust 系统编程入门，提供从零到部署的完整学习路径。前置建议：JavaScript 基础、工程化 · 环境变量。",{"path":1448,"title":1449,"description":1450,"category":10,"score":467},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fbase","Bun 基础与核心命令","Bun 是用 Zig 编写的 JavaScript 运行时，内置包管理（bun install）、打包（bun build）、测试（bun test）等，并持续兼容 Node.js API。本文介绍核心特点、安装方式，以及日常最常用的命令与包管理功能。见 运行时对比。",{"series":1452,"title":12,"items":1453,"index":481,"prev":1458,"next":1459},"booklet\u002Fuphold\u002Fdocker",[1454,1455,1456,1457],{"path":1341,"title":1434,"date":13,"pinned":14},{"path":244,"title":1336,"date":13,"pinned":14},{"path":7,"title":8,"date":13,"pinned":14},{"path":277,"title":278,"date":13,"pinned":14},{"path":244,"title":1336,"date":13,"pinned":14},{"path":277,"title":278,"date":13,"pinned":14}]