[{"data":1,"prerenderedAt":1437},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fdocker\u002Fresources\u002Fdocker-command":158,"\u002Fdocs\u002Fdocker\u002Fresources\u002Fdocker-command-description":1426},[4],{"title":5,"path":6,"stem":7,"children":8,"page":36},"Docs","\u002Fdocs","docs",[9,37,45,65,148],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":36},"Redis","Redis是一个开源的高性能键值存储数据库，它提供了多种数据结构来存储数据，如字符串、哈希、列表、集合、有序集合等。Redis将数据存储在内存中，以提供快速的读写访问速度，并且能够通过异步的方式将数据持久化到磁盘上。它支持复制、Lua脚本、事务处理、不同级别的持久化选项以及多种客户端语言的接口。Redis广泛用于缓存、消息队列、短时数据存储和高性能的应用场景中。","skill-icons:redis-light","\u002Fdocs\u002Fredis","docs\u002F1.redis",[16],{"title":17,"path":18,"stem":19,"children":20,"description":34,"icon":35},"install","\u002Fdocs\u002Fredis\u002Finstall","docs\u002F1.redis\u002F1.install\u002F1.index",[21,24,29],{"title":22,"path":18,"stem":19,"description":23},"Introduction","The powerful Git-based CMS designed specifically for Nuxt developers.",{"title":25,"path":26,"stem":27,"description":28},"Installation","\u002Fdocs\u002Fredis\u002Finstall\u002Finstallation","docs\u002F1.redis\u002F1.install\u002F2.installation","Get started with Nuxt Content v3 in your Nuxt application.",{"title":30,"path":31,"stem":32,"description":33},"Configuration","\u002Fdocs\u002Fredis\u002Finstall\u002Fconfiguration","docs\u002F1.redis\u002F1.install\u002F3.configuration","Nuxt Content is configured with sensible defaults.",null,"icon-park-outline:install",false,{"title":38,"path":39,"stem":40,"children":41,"description":43,"icon":44},"SpringBoot","\u002Fdocs\u002Fspringboot","docs\u002F2.springboot\u002F1.index",[42],{"title":22,"path":39,"stem":40,"description":23},"Spring Boot 是一个基于 Spring 框架的‌开箱即用型 Java 开发框架‌，由 Pivotal 团队于 2014 年推出，旨在彻底简化 Spring 应用的初始搭建、配置和部署流程。其核心理念是 ‌\"约定优于配置\"‌，通过自动化机制减少开发者的样板代码工作，显著提升效率。","simple-icons:springboot",{"title":46,"path":47,"stem":48,"children":49,"description":63,"icon":64},"Rocky Linux","\u002Fdocs\u002Frocky","docs\u002F3.rocky\u002F1.index",[50,53,58],{"title":51,"path":47,"stem":48,"description":52},"1 Rocky Linux 概述","Rocky Linux 是一个开源、免费的企业级 Linux 操作系统。它的核心目标是与 Red Hat Enterprise Linux (RHEL) 100% 完全兼容，可以看作是原本广受欢迎的 CentOS 的“替代者”和“精神继承者.",{"title":54,"path":55,"stem":56,"description":57},"2 VMware安装Rocky Linux","\u002Fdocs\u002Frocky\u002Finstall","docs\u002F3.rocky\u002F2.install","本文主要介绍了VMware Workstation 17.x 虚拟机如何快速安装Rocky Linux 10.x 版本的Linux操作系统。",{"title":59,"path":60,"stem":61,"description":62},"3 Rocky Linux 10安装Docker","\u002Fdocs\u002Frocky\u002Fdocker","docs\u002F3.rocky\u002F3.docker","在 Rocky Linux 10 上安装 Docker 的推荐方式是使用其官方仓库。下面是完整的安装步骤。","Rocky Linux 是一个开源、免费的企业级 Linux 操作系统。它的核心目标是与 Red Hat Enterprise Linux (RHEL) 100% 完全兼容，可以看作是原本广受欢迎的 CentOS 的“替代者”和“精神继承者”","logos:rocky-linux-icon",{"title":66,"description":67,"icon":68,"path":69,"stem":70,"children":71,"page":36},"Docker","Docker是一个开源的应用容器引擎，可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中，然后发布到Docker容器中运行，也可以实现虚拟化。","devicon:docker","\u002Fdocs\u002Fdocker","docs\u002F4.docker",[72,96,111,137],{"title":73,"path":74,"stem":75,"children":76,"description":34,"icon":95},"Docker 基础","\u002Fdocs\u002Fdocker\u002Fbasic","docs\u002F4.docker\u002F1.basic\u002F1.index",[77,80,85,90],{"title":78,"path":74,"stem":75,"description":79},"Docker基础概念","Docker是一个基于Go语言开发并遵从 Apache2.0 协议开源的应用容器引擎，可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中，然后发布到Docker环境中运行，容器彼此隔离，但可以通过特定的通道相互传递信息。保证了在任何环境下运行的应用程序具有相同的行为，这极大地减少了环境差异导致的“在我机器上可以运行”的问题。",{"title":81,"path":82,"stem":83,"description":84},"Docker核心架构","\u002Fdocs\u002Fdocker\u002Fbasic\u002Fdocker-architecture","docs\u002F4.docker\u002F1.basic\u002F2.docker-architecture","Docker 采用 C\u002FS 架构，客户端通过 REST API 将指令下达给常驻后台的守护进程（dockerd）；守护进程则依靠 Linux 内核的 Namespace 实现环境隔离、Cgroups 实现资源配额，并利用 UnionFS 的分层存储机制构建镜像和容器，从而在单台宿主机上实现了轻量级、高性能的应用沙箱。",{"title":86,"path":87,"stem":88,"description":89},"Docker镜像加速","\u002Fdocs\u002Fdocker\u002Fbasic\u002Fdocker-mirror-acceleration","docs\u002F4.docker\u002F1.basic\u002F3.docker-mirror-acceleration","Docker安装完成后默认的官方镜像仓库是[Docker Hub‌](https:\u002F\u002Fhub.docker.com\u002F){target=blank}，这是Docker官方维护的公共镜像注册中心。但对于国内Docker用户而言，在没有魔法的情况下是无法访问Docker Hub网站的，也无法从Docker Hub仓库拉取镜像。目前国内常用的2种方法：**Docker镜像加速源** 和 **配置Docker代理**。",{"title":91,"path":92,"stem":93,"description":94},"Docker Context","\u002Fdocs\u002Fdocker\u002Fbasic\u002Fdocker-context","docs\u002F4.docker\u002F1.basic\u002F4.docker-context","Docker Context 是 Docker 19.03 版本引入的一项功能，它为 Docker 客户端（CLI）提供了一套标准化的“连接配置”机制。通过 Context，你可以轻松地在本地开发环境、远程服务器、云服务等多个 Docker 环境之间快速切换，极大地提升了多环境管理的效率。","mdi:information-box-outline",{"title":97,"description":34,"icon":35,"path":98,"stem":99,"children":100,"page":36},"Docker 安装","\u002Fdocs\u002Fdocker\u002Finstall","docs\u002F4.docker\u002F2.install",[101,106],{"title":102,"path":103,"stem":104,"description":105},"CentOS安装Docker","\u002Fdocs\u002Fdocker\u002Finstall\u002Fcentos-docker-install","docs\u002F4.docker\u002F2.install\u002F1.centos-docker-install","在 CentOS 上安装 Docker，准确的说是安装 Docker Engine, 本文主要介绍如何在CentOS上安装Docker。",{"title":107,"path":108,"stem":109,"description":110},"Rocky安装Docker","\u002Fdocs\u002Fdocker\u002Finstall\u002Frocky-docker-install","docs\u002F4.docker\u002F2.install\u002F2.rocky-docker-install","在 Rocky Linux 10 上安装 Docker 和 Centos 安装 Docker 步骤基本类似的，推荐方式是使用其官方仓库。下面是完整的安装步骤。",{"title":112,"description":34,"icon":113,"path":114,"stem":115,"children":116,"page":36},"Docker 使用","fluent:data-usage-24-regular","\u002Fdocs\u002Fdocker\u002Fusage","docs\u002F4.docker\u002F3.usage",[117,122,127,132],{"title":118,"path":119,"stem":120,"description":121},"Docker持久化","\u002Fdocs\u002Fdocker\u002Fusage\u002Fdocker-persistence","docs\u002F4.docker\u002F3.usage\u002F1.docker-persistence","在 Docker 中，容器默认是无状态的，容器删除后内部数据会直接丢失，Docker 官方提供了三类核心数据持久化方案，分别适配不同的使用场景：卷（Volumes）、绑定挂载（Bind Mounts） 和 tmpfs 挂载。",{"title":123,"path":124,"stem":125,"description":126},"Docker容器自启动","\u002Fdocs\u002Fdocker\u002Fusage\u002Fcontainer-restart","docs\u002F4.docker\u002F3.usage\u002F2.container-restart","Docker容器自启动策略是指Docker服务运行期间，特定容器在退出、崩溃或宿主机重启后，容器是否自动重新运行。",{"title":128,"path":129,"stem":130,"description":131},"Docker Dockerfile","\u002Fdocs\u002Fdocker\u002Fusage\u002Fdocker-dockerfile","docs\u002F4.docker\u002F3.usage\u002F3.docker-dockerfile","本文旨在探讨Dockerfile的功能定位与指令体系，并在此基础上，给出基于Dockerfile实现自定义镜像构建的具体方法。",{"title":133,"path":134,"stem":135,"description":136},"连接远程Docker服务","\u002Fdocs\u002Fdocker\u002Fusage\u002Fconnect-remote-docker","docs\u002F4.docker\u002F3.usage\u002F4.connect-remote-docker","在日常开发或测试中，我们经常需要在本地开发环境中直接操作远程 Docker 服务——执行镜像构建、容器启停等命令，效果与直接在远程服务器上操作完全一致。这能极大提升调试与部署效率，同时避免频繁登录远程服务器的繁琐。",{"title":138,"description":34,"icon":139,"path":140,"stem":141,"children":142,"page":36},"Docker 参考手册","material-symbols-light:docs-outline","\u002Fdocs\u002Fdocker\u002Fresources","docs\u002F4.docker\u002F5.resources",[143],{"title":144,"path":145,"stem":146,"description":147},"Docker 命令大全","\u002Fdocs\u002Fdocker\u002Fresources\u002Fdocker-command","docs\u002F4.docker\u002F5.resources\u002F1.docker-command","下面介绍Docker常见的基础命令。",{"title":149,"path":150,"stem":151,"children":152,"description":156,"icon":157},"Linux","\u002Fdocs\u002Flinux","docs\u002F5.Linux\u002F1.index",[153],{"title":154,"path":150,"stem":151,"description":155},"1.dnf和yum区别","一句话概括：dnf 是 yum 的下一代升级版，你可以把 dnf 看作\"优化重构后的yum\"","Linux是免费开源、多用户多任务、高稳定性与安全性、支持多平台硬件的Unix操作系统。文档整理了Linux相关的命令和常见问题处理方法。","logos:linux-tux",{"id":159,"title":160,"body":161,"createDate":1417,"description":147,"extension":1418,"links":34,"meta":1419,"navigation":1420,"path":145,"readingTime":1421,"seo":1422,"sitemap":1423,"stem":146,"updateDate":34,"wordCount":1424,"__hash__":1425},"docs\u002Fdocs\u002F4.docker\u002F5.resources\u002F1.docker-command.md","Docker命令大全",{"type":162,"value":163,"toc":1412},"minimark",[164,169,180,206,214,229,237,249,256,271,279,293,301,325,333,346,354,368,376,390,398,414,422,446,454,475,483,514,522,555,563,581,589,610,618,632,639,659,666,684,688,696,725,733,758,878,885,897,905,918,925,939,946,960,967,981,989,1003,1011,1031,1039,1053,1060,1074,1081,1095,1099,1106,1124,1131,1137,1163,1169,1191,1197,1226,1232,1257,1265,1312,1320,1335,1342,1359,1367,1408],[165,166,168],"h2",{"id":167},"_1-镜像命令","1. 镜像命令",[170,171,172],"ul",{},[173,174,175,179],"li",{},[176,177,178],"strong",{},"搜索镜像",": 从镜像仓库搜索镜像。",[181,182,187],"pre",{"className":183,"code":184,"language":185,"meta":186,"style":186},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker search nginx\n","bash","",[188,189,190],"code",{"__ignoreMap":186},[191,192,195,199,203],"span",{"class":193,"line":194},"line",1,[191,196,198],{"class":197},"sBMFI","docker",[191,200,202],{"class":201},"sfazB"," search",[191,204,205],{"class":201}," nginx\n",[170,207,208],{},[173,209,210,213],{},[176,211,212],{},"拉取镜像","：从镜像仓库拉取镜像",[181,215,217],{"className":183,"code":216,"language":185,"meta":186,"style":186},"docker pull nginx:latest\n",[188,218,219],{"__ignoreMap":186},[191,220,221,223,226],{"class":193,"line":194},[191,222,198],{"class":197},[191,224,225],{"class":201}," pull",[191,227,228],{"class":201}," nginx:latest\n",[170,230,231],{},[173,232,233,236],{},[176,234,235],{},"列出本地镜像","：列出从镜像仓库下载的所有镜像",[181,238,240],{"className":183,"code":239,"language":185,"meta":186,"style":186},"docker images\n",[188,241,242],{"__ignoreMap":186},[191,243,244,246],{"class":193,"line":194},[191,245,198],{"class":197},[191,247,248],{"class":201}," images\n",[170,250,251],{},[173,252,253,255],{},[176,254,235],{},"：列出从镜像仓库下载的所有镜像详细信息",[181,257,259],{"className":183,"code":258,"language":185,"meta":186,"style":186},"docker images -a\n",[188,260,261],{"__ignoreMap":186},[191,262,263,265,268],{"class":193,"line":194},[191,264,198],{"class":197},[191,266,267],{"class":201}," images",[191,269,270],{"class":201}," -a\n",[170,272,273],{},[173,274,275,278],{},[176,276,277],{},"列出本地镜像ID","：列出从镜像仓库下载的所有镜像ID",[181,280,282],{"className":183,"code":281,"language":185,"meta":186,"style":186},"docker images -q\n",[188,283,284],{"__ignoreMap":186},[191,285,286,288,290],{"class":193,"line":194},[191,287,198],{"class":197},[191,289,267],{"class":201},[191,291,292],{"class":201}," -q\n",[170,294,295],{},[173,296,297,300],{},[176,298,299],{},"显示镜像及占用空间","：列出从镜像仓库下载的所有镜像的名称，版本，大小",[181,302,304],{"className":183,"code":303,"language":185,"meta":186,"style":186},"docker images --format \"table {{.Repository}}\\t{{.Tag}}\\t{{.Size}}\"\n",[188,305,306],{"__ignoreMap":186},[191,307,308,310,312,315,319,322],{"class":193,"line":194},[191,309,198],{"class":197},[191,311,267],{"class":201},[191,313,314],{"class":201}," --format",[191,316,318],{"class":317},"sMK4o"," \"",[191,320,321],{"class":201},"table {{.Repository}}\\t{{.Tag}}\\t{{.Size}}",[191,323,324],{"class":317},"\"\n",[170,326,327],{},[173,328,329,332],{},[176,330,331],{},"过滤特定镜像","：显示特定镜像信息",[181,334,336],{"className":183,"code":335,"language":185,"meta":186,"style":186},"docker images nginx\n",[188,337,338],{"__ignoreMap":186},[191,339,340,342,344],{"class":193,"line":194},[191,341,198],{"class":197},[191,343,267],{"class":201},[191,345,205],{"class":201},[170,347,348],{},[173,349,350,353],{},[176,351,352],{},"显示镜像的‌DIGEST（内容哈希值）‌","：精确验证镜像是否被篡改、去重、跨平台拉取时确认一致性",[181,355,357],{"className":183,"code":356,"language":185,"meta":186,"style":186},"docker images --digests\n",[188,358,359],{"__ignoreMap":186},[191,360,361,363,365],{"class":193,"line":194},[191,362,198],{"class":197},[191,364,267],{"class":201},[191,366,367],{"class":201}," --digests\n",[170,369,370],{},[173,371,372,375],{},[176,373,374],{},"删除镜像","：删除指定镜像，如果有容器使用这个镜像，需先删除依赖的容器",[181,377,379],{"className":183,"code":378,"language":185,"meta":186,"style":186},"docker rmi nginx:latest\n",[188,380,381],{"__ignoreMap":186},[191,382,383,385,388],{"class":193,"line":194},[191,384,198],{"class":197},[191,386,387],{"class":201}," rmi",[191,389,228],{"class":201},[170,391,392],{},[173,393,394,397],{},[176,395,396],{},"强制删除镜像","：强制删除，‌即使有容器在用也会删除，删除后容器异常退出",[181,399,401],{"className":183,"code":400,"language":185,"meta":186,"style":186},"docker rmi -f nginx:latest\n",[188,402,403],{"__ignoreMap":186},[191,404,405,407,409,412],{"class":193,"line":194},[191,406,198],{"class":197},[191,408,387],{"class":201},[191,410,411],{"class":201}," -f",[191,413,228],{"class":201},[170,415,416],{},[173,417,418,421],{},[176,419,420],{},"删除所有镜像","：Shell脚本组合（先查ID，再逐个删除），“蛮力删除”：把所有镜像ID一股脑塞给rmi命令，遇到正在使用的镜像，，中断整个删除过程，后面的镜像不再处理。",[181,423,425],{"className":183,"code":424,"language":185,"meta":186,"style":186},"docker rmi $(docker images -q)\n",[188,426,427],{"__ignoreMap":186},[191,428,429,431,433,436,438,440,443],{"class":193,"line":194},[191,430,198],{"class":197},[191,432,387],{"class":201},[191,434,435],{"class":317}," $(",[191,437,198],{"class":197},[191,439,267],{"class":201},[191,441,442],{"class":201}," -q",[191,444,445],{"class":317},")\n",[170,447,448],{},[173,449,450,453],{},[176,451,452],{},"删除所有未使用的镜像","：Docker 原生清理命令（内置引用计数逻辑），“智能回收”：计算引用计数，只删除没有任何容器（包括停止的）引用的镜像，遇到正在使用的镜像，自动跳过该镜像，不报错，继续删除其他符合条件的镜像。",[181,455,457],{"className":183,"code":456,"language":185,"meta":186,"style":186},"docker image prune -a --force\n",[188,458,459],{"__ignoreMap":186},[191,460,461,463,466,469,472],{"class":193,"line":194},[191,462,198],{"class":197},[191,464,465],{"class":201}," image",[191,467,468],{"class":201}," prune",[191,470,471],{"class":201}," -a",[191,473,474],{"class":201}," --force\n",[170,476,477],{},[173,478,479,482],{},[176,480,481],{},"判断镜像是否使用","：判断镜像是否被容器占用",[181,484,486],{"className":183,"code":485,"language":185,"meta":186,"style":186},"# 查看某个镜像是否有容器在用\ndocker ps -a --filter \"ancestor=nginx:latest\"\n",[188,487,488,494],{"__ignoreMap":186},[191,489,490],{"class":193,"line":194},[191,491,493],{"class":492},"sHwdD","# 查看某个镜像是否有容器在用\n",[191,495,497,499,502,504,507,509,512],{"class":193,"line":496},2,[191,498,198],{"class":197},[191,500,501],{"class":201}," ps",[191,503,471],{"class":201},[191,505,506],{"class":201}," --filter",[191,508,318],{"class":317},[191,510,511],{"class":201},"ancestor=nginx:latest",[191,513,324],{"class":317},[170,515,516],{},[173,517,518,521],{},[176,519,520],{},"查看未被使用的镜像",": 查看未被使用的镜像名称",[181,523,525],{"className":183,"code":524,"language":185,"meta":186,"style":186},"docker ps  -a --format \"{{.Image}}\" | sort -u\n",[188,526,527],{"__ignoreMap":186},[191,528,529,531,533,536,538,540,543,546,549,552],{"class":193,"line":194},[191,530,198],{"class":197},[191,532,501],{"class":201},[191,534,535],{"class":201},"  -a",[191,537,314],{"class":201},[191,539,318],{"class":317},[191,541,542],{"class":201},"{{.Image}}",[191,544,545],{"class":317},"\"",[191,547,548],{"class":317}," |",[191,550,551],{"class":197}," sort",[191,553,554],{"class":201}," -u\n",[170,556,557],{},[173,558,559,562],{},[176,560,561],{},"标记镜像","：给镜像标记tag",[181,564,566],{"className":183,"code":565,"language":185,"meta":186,"style":186},"docker tag nginx:latest myrepo\u002Fnginx:v1\n",[188,567,568],{"__ignoreMap":186},[191,569,570,572,575,578],{"class":193,"line":194},[191,571,198],{"class":197},[191,573,574],{"class":201}," tag",[191,576,577],{"class":201}," nginx:latest",[191,579,580],{"class":201}," myrepo\u002Fnginx:v1\n",[170,582,583],{},[173,584,585,588],{},[176,586,587],{},"构建镜像","：根据当前目录的 Dockerfile 打包生成自己的镜像",[181,590,592],{"className":183,"code":591,"language":185,"meta":186,"style":186},"docker build -t my-app .\n",[188,593,594],{"__ignoreMap":186},[191,595,596,598,601,604,607],{"class":193,"line":194},[191,597,198],{"class":197},[191,599,600],{"class":201}," build",[191,602,603],{"class":201}," -t",[191,605,606],{"class":201}," my-app",[191,608,609],{"class":201}," .\n",[170,611,612],{},[173,613,614,617],{},[176,615,616],{},"推送镜像到仓库","：",[181,619,621],{"className":183,"code":620,"language":185,"meta":186,"style":186},"docker push myrepo\u002Fnginx:v1\n",[188,622,623],{"__ignoreMap":186},[191,624,625,627,630],{"class":193,"line":194},[191,626,198],{"class":197},[191,628,629],{"class":201}," push",[191,631,580],{"class":201},[170,633,634],{},[173,635,636,617],{},[176,637,638],{},"保存镜像为文件",[181,640,642],{"className":183,"code":641,"language":185,"meta":186,"style":186},"docker save -o nginx.tar nginx:latest\n",[188,643,644],{"__ignoreMap":186},[191,645,646,648,651,654,657],{"class":193,"line":194},[191,647,198],{"class":197},[191,649,650],{"class":201}," save",[191,652,653],{"class":201}," -o",[191,655,656],{"class":201}," nginx.tar",[191,658,228],{"class":201},[170,660,661],{},[173,662,663,617],{},[176,664,665],{},"从文件加载镜像",[181,667,669],{"className":183,"code":668,"language":185,"meta":186,"style":186},"docker load -i nginx.tar\n",[188,670,671],{"__ignoreMap":186},[191,672,673,675,678,681],{"class":193,"line":194},[191,674,198],{"class":197},[191,676,677],{"class":201}," load",[191,679,680],{"class":201}," -i",[191,682,683],{"class":201}," nginx.tar\n",[165,685,687],{"id":686},"_2-容器命令","2. 容器命令",[170,689,690],{},[173,691,692,695],{},[176,693,694],{},"运行容器","：-d：后台运行，--name：指定名称，-p：端口映射，格式 宿主机端口:容器端口",[181,697,699],{"className":183,"code":698,"language":185,"meta":186,"style":186},"docker run -d --name nginx -p 80:80 nginx:latest\n",[188,700,701],{"__ignoreMap":186},[191,702,703,705,708,711,714,717,720,723],{"class":193,"line":194},[191,704,198],{"class":197},[191,706,707],{"class":201}," run",[191,709,710],{"class":201}," -d",[191,712,713],{"class":201}," --name",[191,715,716],{"class":201}," nginx",[191,718,719],{"class":201}," -p",[191,721,722],{"class":201}," 80:80",[191,724,228],{"class":201},[170,726,727],{},[173,728,729,732],{},[176,730,731],{},"挂载卷","：-v \u002Fusr\u002Flocal\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf:ro 将宿主机\u002Fusr\u002Flocal\u002Fnginx.conf文件映射挂载到容器\u002Fetc\u002Fnginx\u002Fnginx\u002Fconf，:ro 表示只读挂载，防止容器内意外修改配置。",[181,734,736],{"className":183,"code":735,"language":185,"meta":186,"style":186},"docker run -d -p 80:80 -v \u002Fusr\u002Flocal\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf:ro nginx\n",[188,737,738],{"__ignoreMap":186},[191,739,740,742,744,746,748,750,753,756],{"class":193,"line":194},[191,741,198],{"class":197},[191,743,707],{"class":201},[191,745,710],{"class":201},[191,747,719],{"class":201},[191,749,722],{"class":201},[191,751,752],{"class":201}," -v",[191,754,755],{"class":201}," \u002Fusr\u002Flocal\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf:ro",[191,757,205],{"class":201},[759,760,761,769],"tip",{},[762,763,764,765,768],"p",{},"最佳实践组合（推荐）",[766,767],"br",{},"\n如果你需要持久化存储网页和配置，建议创建 Docker 卷来管理数据：",[181,770,772],{"className":183,"code":771,"language":185,"meta":186,"style":186},"# 1. 创建两个卷（分别存网页和配置）\ndocker volume create nginx-html\ndocker volume create nginx-conf\n\n# 2. 运行容器并挂载卷\ndocker run -d --name my-nginx -p 8080:80 \\\n  -v nginx-html:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml \\\n  -v nginx-conf:\u002Fetc\u002Fnginx\u002Fconf.d \\\n  nginx\n\n# 3. 后续只需将文件放入卷对应目录即可\n",[188,773,774,779,792,804,811,817,840,851,861,867,872],{"__ignoreMap":186},[191,775,776],{"class":193,"line":194},[191,777,778],{"class":492},"# 1. 创建两个卷（分别存网页和配置）\n",[191,780,781,783,786,789],{"class":193,"line":496},[191,782,198],{"class":197},[191,784,785],{"class":201}," volume",[191,787,788],{"class":201}," create",[191,790,791],{"class":201}," nginx-html\n",[191,793,795,797,799,801],{"class":193,"line":794},3,[191,796,198],{"class":197},[191,798,785],{"class":201},[191,800,788],{"class":201},[191,802,803],{"class":201}," nginx-conf\n",[191,805,807],{"class":193,"line":806},4,[191,808,810],{"emptyLinePlaceholder":809},true,"\n",[191,812,814],{"class":193,"line":813},5,[191,815,816],{"class":492},"# 2. 运行容器并挂载卷\n",[191,818,820,822,824,826,828,831,833,836],{"class":193,"line":819},6,[191,821,198],{"class":197},[191,823,707],{"class":201},[191,825,710],{"class":201},[191,827,713],{"class":201},[191,829,830],{"class":201}," my-nginx",[191,832,719],{"class":201},[191,834,835],{"class":201}," 8080:80",[191,837,839],{"class":838},"sTEyZ"," \\\n",[191,841,843,846,849],{"class":193,"line":842},7,[191,844,845],{"class":201},"  -v",[191,847,848],{"class":201}," nginx-html:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml",[191,850,839],{"class":838},[191,852,854,856,859],{"class":193,"line":853},8,[191,855,845],{"class":201},[191,857,858],{"class":201}," nginx-conf:\u002Fetc\u002Fnginx\u002Fconf.d",[191,860,839],{"class":838},[191,862,864],{"class":193,"line":863},9,[191,865,866],{"class":201},"  nginx\n",[191,868,870],{"class":193,"line":869},10,[191,871,810],{"emptyLinePlaceholder":809},[191,873,875],{"class":193,"line":874},11,[191,876,877],{"class":492},"# 3. 后续只需将文件放入卷对应目录即可\n",[170,879,880],{},[173,881,882,617],{},[176,883,884],{},"查看运行中容器",[181,886,888],{"className":183,"code":887,"language":185,"meta":186,"style":186},"docker ps\n",[188,889,890],{"__ignoreMap":186},[191,891,892,894],{"class":193,"line":194},[191,893,198],{"class":197},[191,895,896],{"class":201}," ps\n",[170,898,899],{},[173,900,901,904],{},[176,902,903],{},"查看所有容器","：包括未运行的容器",[181,906,908],{"className":183,"code":907,"language":185,"meta":186,"style":186},"docker ps -a\n",[188,909,910],{"__ignoreMap":186},[191,911,912,914,916],{"class":193,"line":194},[191,913,198],{"class":197},[191,915,501],{"class":201},[191,917,270],{"class":201},[170,919,920],{},[173,921,922,617],{},[176,923,924],{},"停止运行中的容器",[181,926,928],{"className":183,"code":927,"language":185,"meta":186,"style":186},"docker stop nginx\n",[188,929,930],{"__ignoreMap":186},[191,931,932,934,937],{"class":193,"line":194},[191,933,198],{"class":197},[191,935,936],{"class":201}," stop",[191,938,205],{"class":201},[170,940,941],{},[173,942,943,617],{},[176,944,945],{},"启动停止的容器",[181,947,949],{"className":183,"code":948,"language":185,"meta":186,"style":186},"docker start nginx\n",[188,950,951],{"__ignoreMap":186},[191,952,953,955,958],{"class":193,"line":194},[191,954,198],{"class":197},[191,956,957],{"class":201}," start",[191,959,205],{"class":201},[170,961,962],{},[173,963,964,617],{},[176,965,966],{},"重启容器",[181,968,970],{"className":183,"code":969,"language":185,"meta":186,"style":186},"docker restart nginx\n",[188,971,972],{"__ignoreMap":186},[191,973,974,976,979],{"class":193,"line":194},[191,975,198],{"class":197},[191,977,978],{"class":201}," restart",[191,980,205],{"class":201},[170,982,983],{},[173,984,985,988],{},[176,986,987],{},"删除容器","：可加-f强制删除运行中的",[181,990,992],{"className":183,"code":991,"language":185,"meta":186,"style":186},"docker rm nginx\n",[188,993,994],{"__ignoreMap":186},[191,995,996,998,1001],{"class":193,"line":194},[191,997,198],{"class":197},[191,999,1000],{"class":201}," rm",[191,1002,205],{"class":201},[170,1004,1005],{},[173,1006,1007,1010],{},[176,1008,1009],{},"进入容器内部","：需容器支持bash",[181,1012,1014],{"className":183,"code":1013,"language":185,"meta":186,"style":186},"docker exec -it nginx \u002Fbin\u002Fbash\n",[188,1015,1016],{"__ignoreMap":186},[191,1017,1018,1020,1023,1026,1028],{"class":193,"line":194},[191,1019,198],{"class":197},[191,1021,1022],{"class":201}," exec",[191,1024,1025],{"class":201}," -it",[191,1027,716],{"class":201},[191,1029,1030],{"class":201}," \u002Fbin\u002Fbash\n",[170,1032,1033],{},[173,1034,1035,1038],{},[176,1036,1037],{},"查看容器日志","：可加-f实时跟踪",[181,1040,1042],{"className":183,"code":1041,"language":185,"meta":186,"style":186},"docker logs nginx\n",[188,1043,1044],{"__ignoreMap":186},[191,1045,1046,1048,1051],{"class":193,"line":194},[191,1047,198],{"class":197},[191,1049,1050],{"class":201}," logs",[191,1052,205],{"class":201},[170,1054,1055],{},[173,1056,1057,617],{},[176,1058,1059],{},"查看容器内进程",[181,1061,1063],{"className":183,"code":1062,"language":185,"meta":186,"style":186},"docker top nginx\n",[188,1064,1065],{"__ignoreMap":186},[191,1066,1067,1069,1072],{"class":193,"line":194},[191,1068,198],{"class":197},[191,1070,1071],{"class":201}," top",[191,1073,205],{"class":201},[170,1075,1076],{},[173,1077,1078,617],{},[176,1079,1080],{},"查看容器详细信息",[181,1082,1084],{"className":183,"code":1083,"language":185,"meta":186,"style":186},"docker inspect nginx\n",[188,1085,1086],{"__ignoreMap":186},[191,1087,1088,1090,1093],{"class":193,"line":194},[191,1089,198],{"class":197},[191,1091,1092],{"class":201}," inspect",[191,1094,205],{"class":201},[165,1096,1098],{"id":1097},"_3-资源限制","3. 资源限制",[170,1100,1101],{},[173,1102,1103,617],{},[176,1104,1105],{},"限制容器内存",[181,1107,1109],{"className":183,"code":1108,"language":185,"meta":186,"style":186},"docker run -d --memory=256m nginx\n",[188,1110,1111],{"__ignoreMap":186},[191,1112,1113,1115,1117,1119,1122],{"class":193,"line":194},[191,1114,198],{"class":197},[191,1116,707],{"class":201},[191,1118,710],{"class":201},[191,1120,1121],{"class":201}," --memory=256m",[191,1123,205],{"class":201},[170,1125,1126],{},[173,1127,1128,617],{},[176,1129,1130],{},"限制CPU份额",[762,1132,1133,1136],{},[176,1134,1135],{},"🧮 方法一：按权重分配（--cpu-shares）",", 参数：--cpu-shares（或 -c），默认值为 1024，这种方式不设定硬性上限，而是在多个容器竞争 CPU 时，按比例分配资源。它仅在 CPU 资源紧张时才生效。",[181,1138,1140],{"className":183,"code":1139,"language":185,"meta":186,"style":186},"docker run -d --cpu-shares 512 --name nginx nginx\n",[188,1141,1142],{"__ignoreMap":186},[191,1143,1144,1146,1148,1150,1153,1157,1159,1161],{"class":193,"line":194},[191,1145,198],{"class":197},[191,1147,707],{"class":201},[191,1149,710],{"class":201},[191,1151,1152],{"class":201}," --cpu-shares",[191,1154,1156],{"class":1155},"sbssI"," 512",[191,1158,713],{"class":201},[191,1160,716],{"class":201},[191,1162,205],{"class":201},[762,1164,1165,1168],{},[176,1166,1167],{},"🎯 方法二：限制核心数量（--cpus）","： 直接设置容器能使用的 CPU 核心数上限，这是最常用且直观的方式。参数：--cpus，支持小数，示例：--cpus=1.5 表示容器最多使用 1.5 个 CPU 核心。",[181,1170,1172],{"className":183,"code":1171,"language":185,"meta":186,"style":186},"docker run -d --cpus=1.5 --name nginx nginx\n",[188,1173,1174],{"__ignoreMap":186},[191,1175,1176,1178,1180,1182,1185,1187,1189],{"class":193,"line":194},[191,1177,198],{"class":197},[191,1179,707],{"class":201},[191,1181,710],{"class":201},[191,1183,1184],{"class":201}," --cpus=1.5",[191,1186,713],{"class":201},[191,1188,716],{"class":201},[191,1190,205],{"class":201},[762,1192,1193,1196],{},[176,1194,1195],{},"🎲 方法三：绑定特定核心（--cpuset-cpus）",": 将容器“绑定”到特定的物理 CPU 核心上运行，适用于需要CPU隔离或对NUMA架构优化的场景。参数：--cpuset-cpus，示例：--cpuset-cpus=\"0,1\" 表示容器只能使用宿主机上的第0和第1个CPU核心。",[181,1198,1200],{"className":183,"code":1199,"language":185,"meta":186,"style":186},"docker run -d --cpuset-cpus=\"0,1\" --name nginx nginx\n",[188,1201,1202],{"__ignoreMap":186},[191,1203,1204,1206,1208,1210,1213,1215,1218,1220,1222,1224],{"class":193,"line":194},[191,1205,198],{"class":197},[191,1207,707],{"class":201},[191,1209,710],{"class":201},[191,1211,1212],{"class":201}," --cpuset-cpus=",[191,1214,545],{"class":317},[191,1216,1217],{"class":201},"0,1",[191,1219,545],{"class":317},[191,1221,713],{"class":201},[191,1223,716],{"class":201},[191,1225,205],{"class":201},[762,1227,1228,1231],{},[176,1229,1230],{},"⏱️ 方法四：精细时间配额（--cpu-period 与 --cpu-quota）",": 这是一种更底层的控制方式，通过设定CPU的调度周期和配额来精确限制。参数：--cpu-period（调度周期，默认100ms）和 --cpu-quota（周期内允许使用的CPU时间）。示例：--cpu-period=100000 --cpu-quota=50000 表示在每100ms的周期内，容器最多使用50ms的CPU时间，即限制使用率为50%。",[181,1233,1235],{"className":183,"code":1234,"language":185,"meta":186,"style":186},"docker run -d --cpu-period=100000 --cpu-quota=50000 --name nginx nginx\n",[188,1236,1237],{"__ignoreMap":186},[191,1238,1239,1241,1243,1245,1248,1251,1253,1255],{"class":193,"line":194},[191,1240,198],{"class":197},[191,1242,707],{"class":201},[191,1244,710],{"class":201},[191,1246,1247],{"class":201}," --cpu-period=100000",[191,1249,1250],{"class":201}," --cpu-quota=50000",[191,1252,713],{"class":201},[191,1254,716],{"class":201},[191,1256,205],{"class":201},[170,1258,1259],{},[173,1260,1261,1264],{},[176,1262,1263],{},"修改正在运行的容器",":",[181,1266,1268],{"className":183,"code":1267,"language":185,"meta":186,"style":186},"# 将容器 my-container 的 CPU 份额调整为 512\ndocker update --cpu-shares 512 my-container\n\n# 将容器 my-container 的 CPU 核心数上限调整为 2\ndocker update --cpus 2 my-container\n",[188,1269,1270,1275,1289,1293,1298],{"__ignoreMap":186},[191,1271,1272],{"class":193,"line":194},[191,1273,1274],{"class":492},"# 将容器 my-container 的 CPU 份额调整为 512\n",[191,1276,1277,1279,1282,1284,1286],{"class":193,"line":496},[191,1278,198],{"class":197},[191,1280,1281],{"class":201}," update",[191,1283,1152],{"class":201},[191,1285,1156],{"class":1155},[191,1287,1288],{"class":201}," my-container\n",[191,1290,1291],{"class":193,"line":794},[191,1292,810],{"emptyLinePlaceholder":809},[191,1294,1295],{"class":193,"line":806},[191,1296,1297],{"class":492},"# 将容器 my-container 的 CPU 核心数上限调整为 2\n",[191,1299,1300,1302,1304,1307,1310],{"class":193,"line":813},[191,1301,198],{"class":197},[191,1303,1281],{"class":201},[191,1305,1306],{"class":201}," --cpus",[191,1308,1309],{"class":1155}," 2",[191,1311,1288],{"class":201},[170,1313,1314],{},[173,1315,1316,1319],{},[176,1317,1318],{},"查看Docker占用的磁盘空间","：查看 Docker 占用了多少磁盘空间，以及哪些可以清理，包括镜像，容器，卷，构建缓存。",[181,1321,1323],{"className":183,"code":1322,"language":185,"meta":186,"style":186},"docker system df\n",[188,1324,1325],{"__ignoreMap":186},[191,1326,1327,1329,1332],{"class":193,"line":194},[191,1328,198],{"class":197},[191,1330,1331],{"class":201}," system",[191,1333,1334],{"class":201}," df\n",[170,1336,1337],{},[173,1338,1339,1341],{},[176,1340,1318],{},"：‌详细模式‌，列出每个镜像\u002F容器的具体信息。",[181,1343,1345],{"className":183,"code":1344,"language":185,"meta":186,"style":186},"docker system df -v\n",[188,1346,1347],{"__ignoreMap":186},[191,1348,1349,1351,1353,1356],{"class":193,"line":194},[191,1350,198],{"class":197},[191,1352,1331],{"class":201},[191,1354,1355],{"class":201}," df",[191,1357,1358],{"class":201}," -v\n",[170,1360,1361],{},[173,1362,1363,1366],{},[176,1364,1365],{},"资源清理","：docker system df = ‌Docker 磁盘使用情况报告‌，重点看 ‌RECLAIMABLE 列‌，告诉你能清出多少空间。使用下面命令可以清理磁盘空间。",[181,1368,1370],{"className":183,"code":1369,"language":185,"meta":186,"style":186},"# 一键清理所有可回收资源\ndocker system prune\n\n# 清理所有（包括未使用的镜像+卷）\ndocker system prune -a --volumes\n",[188,1371,1372,1377,1386,1390,1395],{"__ignoreMap":186},[191,1373,1374],{"class":193,"line":194},[191,1375,1376],{"class":492},"# 一键清理所有可回收资源\n",[191,1378,1379,1381,1383],{"class":193,"line":496},[191,1380,198],{"class":197},[191,1382,1331],{"class":201},[191,1384,1385],{"class":201}," prune\n",[191,1387,1388],{"class":193,"line":794},[191,1389,810],{"emptyLinePlaceholder":809},[191,1391,1392],{"class":193,"line":806},[191,1393,1394],{"class":492},"# 清理所有（包括未使用的镜像+卷）\n",[191,1396,1397,1399,1401,1403,1405],{"class":193,"line":813},[191,1398,198],{"class":197},[191,1400,1331],{"class":201},[191,1402,468],{"class":201},[191,1404,471],{"class":201},[191,1406,1407],{"class":201}," --volumes\n",[1409,1410,1411],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":186,"searchDepth":794,"depth":794,"links":1413},[1414,1415,1416],{"id":167,"depth":496,"text":168},{"id":686,"depth":496,"text":687},{"id":1097,"depth":496,"text":1098},"2026-07-04 11:00:00","md",{},{"title":144},6.5,{"title":160,"description":147},{"loc":145},1173,"pWV-h0rM3lSNgbGUQrq1JubgXpuWhXTJNKUOFQOJgpI",{"data":1427,"body":1428},{},{"type":1429,"children":1430},"root",[1431],{"type":1432,"tag":762,"props":1433,"children":1434},"element",{},[1435],{"type":1436,"value":147},"text",1787625813092]