[{"data":1,"prerenderedAt":1485},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch8-shou-dong-chuang-jian-docker-jing-xiang":3,"wiki-doc-items-2024-10-03-docker-jiao-cheng":1419},{"id":4,"title":5,"body":6,"chapter":1406,"chapterSort":1407,"date":1408,"description":15,"docKey":1409,"docRoot":1410,"docTitle":1411,"extension":1412,"isWikiDoc":285,"isWikiIndex":1413,"meta":1414,"navigation":285,"path":1415,"seo":1416,"stem":1417,"wikiDepth":282,"__hash__":1418},"wiki\u002Fwiki\u002F2024-10-03-Docker教程\u002Fch8-手动创建Docker镜像.md","手动创建Docker镜像",{"type":7,"value":8,"toc":1402},"minimark",[9,16,21,256,259,263,269,294,297,416,422,425,430,433,440,443,448,451,463,466,471,478,509,516,592,597,600,623,626,700,705,708,713,722,727,732,736,747,750,756,759,762,788,791,794,824,827,830,1350,1353,1358,1363,1366,1393,1398],[10,11,12],"p",{},[13,14,15],"strong",{},"（嫌麻烦的话，直接去看各种docker容器部署的章节）（有别人给你创建好的，就别自己折腾啦）",[17,18,20],"h3",{"id":19},"dockerfile","DockerFile",[22,23,24,41],"table",{},[25,26,27],"thead",{},[28,29,30,35,38],"tr",{},[31,32,34],"th",{"align":33},"left","指令",[31,36,37],{"align":33},"说明",[31,39,40],{"align":33},"示例",[42,43,44,56,73,84,95,106,117,128,139,154,168,179,193,204,215,229,245],"tbody",{},[28,45,46,50,53],{},[47,48,49],"td",{"align":33},"FROM",[47,51,52],{"align":33},"指定基础镜像，是 Dockerfile 的起点",[47,54,55],{"align":33},"FROM ubuntu:22.04",[28,57,58,61,64],{},[47,59,60],{"align":33},"LABEL",[47,62,63],{"align":33},"添加元数据（如作者、版本等）",[47,65,66,67,72],{"align":33},"LABEL maintainer=\"",[68,69,71],"a",{"href":70},"mailto:you@example.com","you@example.com","\"",[28,74,75,78,81],{},[47,76,77],{"align":33},"ENV",[47,79,80],{"align":33},"设置环境变量",[47,82,83],{"align":33},"ENV PORT=8080",[28,85,86,89,92],{},[47,87,88],{"align":33},"ARG",[47,90,91],{"align":33},"构建参数，只在构建期间可用",[47,93,94],{"align":33},"ARG VERSION=1.0",[28,96,97,100,103],{},[47,98,99],{"align":33},"RUN",[47,101,102],{"align":33},"构建镜像时运行命令",[47,104,105],{"align":33},"RUN apt-get update && apt-get install -y curl",[28,107,108,111,114],{},[47,109,110],{"align":33},"COPY",[47,112,113],{"align":33},"复制文件到镜像中",[47,115,116],{"align":33},"COPY . \u002Fapp",[28,118,119,122,125],{},[47,120,121],{"align":33},"ADD",[47,123,124],{"align":33},"类似 COPY，额外支持解压 .tar 文件或远程 URL（不推荐用于 URL）",[47,126,127],{"align":33},"ADD archive.tar.gz \u002Fdata\u002F",[28,129,130,133,136],{},[47,131,132],{"align":33},"WORKDIR",[47,134,135],{"align":33},"设置工作目录",[47,137,138],{"align":33},"WORKDIR \u002Fopt",[28,140,141,144,147],{},[47,142,143],{"align":33},"CMD",[47,145,146],{"align":33},"设置容器启动时默认命令（可被 docker run 覆盖）",[47,148,149,150],{"align":33},"CMD ",[151,152,153],"span",{},"\"node\", \"index.js\"",[28,155,156,159,162],{},[47,157,158],{"align":33},"ENTRYPOINT",[47,160,161],{"align":33},"设置容器启动时固定命令（通常用于 CLI 工具等）",[47,163,164,165],{"align":33},"ENTRYPOINT ",[151,166,167],{},"\"python3\"",[28,169,170,173,176],{},[47,171,172],{"align":33},"EXPOSE",[47,174,175],{"align":33},"声明镜像内服务监听的端口（不会自动映射）",[47,177,178],{"align":33},"EXPOSE 80",[28,180,181,184,187],{},[47,182,183],{"align":33},"VOLUME",[47,185,186],{"align":33},"声明数据卷挂载点",[47,188,189,190],{"align":33},"VOLUME ",[151,191,192],{},"\"\u002Fdata\"",[28,194,195,198,201],{},[47,196,197],{"align":33},"USER",[47,199,200],{"align":33},"设置后续命令执行的用户",[47,202,203],{"align":33},"USER appuser",[28,205,206,209,212],{},[47,207,208],{"align":33},"ONBUILD",[47,210,211],{"align":33},"当镜像作为其他镜像基础镜像时触发的构建指令",[47,213,214],{"align":33},"ONBUILD COPY . \u002Fsrc",[28,216,217,220,223],{},[47,218,219],{"align":33},"SHELL",[47,221,222],{"align":33},"更改默认 shell，比如将 sh -c 改为 bash -c",[47,224,225,226],{"align":33},"SHELL ",[151,227,228],{},"\"\u002Fbin\u002Fbash\", \"-c\"",[28,230,231,234,237],{},[47,232,233],{"align":33},"HEALTHCHECK",[47,235,236],{"align":33},"定义容器运行时的健康检查命令",[47,238,239,240],{"align":33},"`HEALTHCHECK CMD curl --fail ",[68,241,242],{"href":242,"rel":243},"http:\u002F\u002Flocalhost:8080",[244],"nofollow",[28,246,247,250,253],{},[47,248,249],{"align":33},"STOPSIGNAL",[47,251,252],{"align":33},"容器停止时发送的信号",[47,254,255],{"align":33},"STOPSIGNAL SIGKILL",[17,257,258],{"id":258},"自己创建容器",[260,261,262],"h4",{"id":262},"手动创建",[10,264,265],{},[68,266,267],{"href":267,"rel":268},"https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002Fros-docker",[244],[270,271,276],"pre",{"className":272,"code":273,"language":274,"meta":275,"style":275},"language-bash shiki shiki-themes github-light github-dark","\n# DockerFile内容请看Github仓库中的DockerFile\n","bash","",[277,278,279,287],"code",{"__ignoreMap":275},[151,280,283],{"class":281,"line":282},"line",1,[151,284,286],{"emptyLinePlaceholder":285},true,"\n",[151,288,290],{"class":281,"line":289},2,[151,291,293],{"class":292},"sJ8bj","# DockerFile内容请看Github仓库中的DockerFile\n",[10,295,296],{},"在x86电脑上编译x86的：",[270,298,300],{"className":272,"code":299,"language":274,"meta":275,"style":275},"docker build -t ros-melodic-cuda118-cudnn8-bionic:latest .\n\ndocker build -t ros-noetic-focal:latest .\n\ndocker build -t ros-humble-jammy:latest .\n\ndocker build -t ros-jazzy-noble:latest .\n\ndocker build -t ros-humble-opencv411-cuda128-cudnn970-jammy:latest .\n\ndocker build -t ros-jazzy-opencv411-cuda128-cudnn970-noble:latest .\n",[277,301,302,322,326,340,345,359,364,378,383,397,402],{"__ignoreMap":275},[151,303,304,308,312,316,319],{"class":281,"line":282},[151,305,307],{"class":306},"sScJk","docker",[151,309,311],{"class":310},"sZZnC"," build",[151,313,315],{"class":314},"sj4cs"," -t",[151,317,318],{"class":310}," ros-melodic-cuda118-cudnn8-bionic:latest",[151,320,321],{"class":310}," .\n",[151,323,324],{"class":281,"line":289},[151,325,286],{"emptyLinePlaceholder":285},[151,327,329,331,333,335,338],{"class":281,"line":328},3,[151,330,307],{"class":306},[151,332,311],{"class":310},[151,334,315],{"class":314},[151,336,337],{"class":310}," ros-noetic-focal:latest",[151,339,321],{"class":310},[151,341,343],{"class":281,"line":342},4,[151,344,286],{"emptyLinePlaceholder":285},[151,346,348,350,352,354,357],{"class":281,"line":347},5,[151,349,307],{"class":306},[151,351,311],{"class":310},[151,353,315],{"class":314},[151,355,356],{"class":310}," ros-humble-jammy:latest",[151,358,321],{"class":310},[151,360,362],{"class":281,"line":361},6,[151,363,286],{"emptyLinePlaceholder":285},[151,365,367,369,371,373,376],{"class":281,"line":366},7,[151,368,307],{"class":306},[151,370,311],{"class":310},[151,372,315],{"class":314},[151,374,375],{"class":310}," ros-jazzy-noble:latest",[151,377,321],{"class":310},[151,379,381],{"class":281,"line":380},8,[151,382,286],{"emptyLinePlaceholder":285},[151,384,386,388,390,392,395],{"class":281,"line":385},9,[151,387,307],{"class":306},[151,389,311],{"class":310},[151,391,315],{"class":314},[151,393,394],{"class":310}," ros-humble-opencv411-cuda128-cudnn970-jammy:latest",[151,396,321],{"class":310},[151,398,400],{"class":281,"line":399},10,[151,401,286],{"emptyLinePlaceholder":285},[151,403,405,407,409,411,414],{"class":281,"line":404},11,[151,406,307],{"class":306},[151,408,311],{"class":310},[151,410,315],{"class":314},[151,412,413],{"class":310}," ros-jazzy-opencv411-cuda128-cudnn970-noble:latest",[151,415,321],{"class":310},[10,417,418],{},[419,420],"img",{"alt":275,"src":421},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage14.webp",[10,423,424],{},"镜像大小5GB(压缩后的大小详见DockerHub)",[10,426,427],{},[419,428],{"alt":275,"src":429},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage15.webp",[10,431,432],{},"将 Docker 镜像推送到 Docker Hub 的步骤如下：",[434,435,436],"ol",{},[437,438,439],"li",{},"创建 Docker Hub 账户",[10,441,442],{},"如果你还没有 Docker Hub 账户，请前往 Docker Hub 注册一个免费账户。",[434,444,445],{"start":289},[437,446,447],{},"登录 Docker Hub",[10,449,450],{},"在终端中使用以下命令登录到你的 Docker Hub 账户：",[270,452,454],{"className":272,"code":453,"language":274,"meta":275,"style":275},"docker login\n",[277,455,456],{"__ignoreMap":275},[151,457,458,460],{"class":281,"line":282},[151,459,307],{"class":306},[151,461,462],{"class":310}," login\n",[10,464,465],{},"输入你的 Docker Hub 用户名和密码进行验证。",[434,467,468],{"start":328},[437,469,470],{},"为你的镜像打标签",[10,472,473,474,477],{},"Docker Hub 使用 ",[277,475,476],{},"\u003C用户名>\u002F\u003C镜像名>:\u003C标签>"," 的格式来标识镜像。你需要为你的镜像打上标签，以便能够推送到 Docker Hub。使用以下命令：",[270,479,481],{"className":272,"code":480,"language":274,"meta":275,"style":275},"docker tag ros-jazzy-noble:latest \u003C你的用户名>\u002Fros-jazzy-noble:latest\n",[277,482,483],{"__ignoreMap":275},[151,484,485,487,490,492,496,499,503,506],{"class":281,"line":282},[151,486,307],{"class":306},[151,488,489],{"class":310}," tag",[151,491,375],{"class":310},[151,493,495],{"class":494},"szBVR"," \u003C",[151,497,498],{"class":310},"你的用户",[151,500,502],{"class":501},"sVt8B","名",[151,504,505],{"class":494},">",[151,507,508],{"class":310},"\u002Fros-jazzy-noble:latest\n",[10,510,511,512,515],{},"例如，如果你的 Docker Hub 用户名是 ",[277,513,514],{},"tungchiahui","，你应该执行：",[270,517,519],{"className":272,"code":518,"language":274,"meta":275,"style":275},"docker tag ros-noetic-focal:latest tungchiahui\u002Fros-noetic-focal:latest\n\ndocker tag ros-humble-jammy:latest tungchiahui\u002Fros-humble-jammy:latest\n\ndocker tag ros-jazzy-noble:latest tungchiahui\u002Fros-jazzy-noble:latest\n\ndocker tag ros-humble-opencv411-cuda128-cudnn970-jammy:latest tungchiahui\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker tag ros-jazzy-opencv411-cuda128-cudnn970-noble:latest tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n",[277,520,521,532,536,547,551,562,566,577,581],{"__ignoreMap":275},[151,522,523,525,527,529],{"class":281,"line":282},[151,524,307],{"class":306},[151,526,489],{"class":310},[151,528,337],{"class":310},[151,530,531],{"class":310}," tungchiahui\u002Fros-noetic-focal:latest\n",[151,533,534],{"class":281,"line":289},[151,535,286],{"emptyLinePlaceholder":285},[151,537,538,540,542,544],{"class":281,"line":328},[151,539,307],{"class":306},[151,541,489],{"class":310},[151,543,356],{"class":310},[151,545,546],{"class":310}," tungchiahui\u002Fros-humble-jammy:latest\n",[151,548,549],{"class":281,"line":342},[151,550,286],{"emptyLinePlaceholder":285},[151,552,553,555,557,559],{"class":281,"line":347},[151,554,307],{"class":306},[151,556,489],{"class":310},[151,558,375],{"class":310},[151,560,561],{"class":310}," tungchiahui\u002Fros-jazzy-noble:latest\n",[151,563,564],{"class":281,"line":361},[151,565,286],{"emptyLinePlaceholder":285},[151,567,568,570,572,574],{"class":281,"line":366},[151,569,307],{"class":306},[151,571,489],{"class":310},[151,573,394],{"class":310},[151,575,576],{"class":310}," tungchiahui\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n",[151,578,579],{"class":281,"line":380},[151,580,286],{"emptyLinePlaceholder":285},[151,582,583,585,587,589],{"class":281,"line":385},[151,584,307],{"class":306},[151,586,489],{"class":310},[151,588,413],{"class":310},[151,590,591],{"class":310}," tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n",[434,593,594],{"start":342},[437,595,596],{},"推送镜像到 Docker Hub",[10,598,599],{},"使用以下命令将镜像推送到 Docker Hub：",[270,601,603],{"className":272,"code":602,"language":274,"meta":275,"style":275},"docker push \u003C你的用户名>\u002Fros-noetic-jazzy-noble:latest\n",[277,604,605],{"__ignoreMap":275},[151,606,607,609,612,614,616,618,620],{"class":281,"line":282},[151,608,307],{"class":306},[151,610,611],{"class":310}," push",[151,613,495],{"class":494},[151,615,498],{"class":310},[151,617,502],{"class":501},[151,619,505],{"class":494},[151,621,622],{"class":310},"\u002Fros-noetic-jazzy-noble:latest\n",[10,624,625],{},"例如：",[270,627,629],{"className":272,"code":628,"language":274,"meta":275,"style":275},"docker push tungchiahui\u002Fros-noetic-focal:latest\n\ndocker push tungchiahui\u002Fros-humble-jammy:latest\n\ndocker push tungchiahui\u002Fros-jazzy-noble:latest\n\ndocker push tungchiahui\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker push tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n\ndocker push tungchiahui\u002Fros-noetic-focal-arm64:latest\n",[277,630,631,639,643,651,655,663,667,675,679,687,691],{"__ignoreMap":275},[151,632,633,635,637],{"class":281,"line":282},[151,634,307],{"class":306},[151,636,611],{"class":310},[151,638,531],{"class":310},[151,640,641],{"class":281,"line":289},[151,642,286],{"emptyLinePlaceholder":285},[151,644,645,647,649],{"class":281,"line":328},[151,646,307],{"class":306},[151,648,611],{"class":310},[151,650,546],{"class":310},[151,652,653],{"class":281,"line":342},[151,654,286],{"emptyLinePlaceholder":285},[151,656,657,659,661],{"class":281,"line":347},[151,658,307],{"class":306},[151,660,611],{"class":310},[151,662,561],{"class":310},[151,664,665],{"class":281,"line":361},[151,666,286],{"emptyLinePlaceholder":285},[151,668,669,671,673],{"class":281,"line":366},[151,670,307],{"class":306},[151,672,611],{"class":310},[151,674,576],{"class":310},[151,676,677],{"class":281,"line":380},[151,678,286],{"emptyLinePlaceholder":285},[151,680,681,683,685],{"class":281,"line":385},[151,682,307],{"class":306},[151,684,611],{"class":310},[151,686,591],{"class":310},[151,688,689],{"class":281,"line":399},[151,690,286],{"emptyLinePlaceholder":285},[151,692,693,695,697],{"class":281,"line":404},[151,694,307],{"class":306},[151,696,611],{"class":310},[151,698,699],{"class":310}," tungchiahui\u002Fros-noetic-focal-arm64:latest\n",[434,701,702],{"start":347},[437,703,704],{},"验证推送成功",[10,706,707],{},"你可以通过访问 Docker Hub 的个人页面来验证你的镜像是否已成功推送。",[10,709,710],{},[13,711,712],{},"注意事项",[714,715,716,719],"ul",{},[437,717,718],{},"确保你的镜像大小在 Docker Hub 的限制范围内（一般为 10GB）。",[437,720,721],{},"如果你打算将镜像公开，可以设置为公共仓库；如果希望只有你自己可以访问，可以设置为私有仓库。",[10,723,724],{},[419,725],{"alt":275,"src":726},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage16.webp",[10,728,729],{},[419,730],{"alt":275,"src":731},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage17.webp",[260,733,735],{"id":734},"手动创建跨平台多架构构建","手动创建(跨平台多架构构建)",[10,737,738,739,742,743,746],{},"如果您想在 ",[13,740,741],{},"x86\u002Fx64 电脑上即为本机x86设备构建镜像，又想为树莓派、Jetson等ARM64 设备构建 Docker 镜像"," ，需要使用 ",[13,744,745],{},"Docker 的跨平台构建功能"," 。以下是完整解决方案：",[748,749],"hr",{},[10,751,752,753],{},"1. ",[13,754,755],{},"启用 Docker 跨平台构建",[10,757,758],{},"在 x86 主机上模拟 ARM64 环境需要以下工具：",[10,760,761],{},"第一步：启用 buildx（只需执行一次）",[270,763,767],{"className":764,"code":765,"language":766,"meta":275,"style":275},"language-Shell shiki shiki-themes github-light github-dark","docker buildx create --name multiarch_builder --use\n","Shell",[277,768,769],{"__ignoreMap":275},[151,770,771,773,776,779,782,785],{"class":281,"line":282},[151,772,307],{"class":306},[151,774,775],{"class":310}," buildx",[151,777,778],{"class":310}," create",[151,780,781],{"class":314}," --name",[151,783,784],{"class":310}," multiarch_builder",[151,786,787],{"class":314}," --use\n",[10,789,790],{},"这会创建并启用一个支持多架构构建的 builder，电脑重启后也依然存在，所以只用运行一次。",[10,792,793],{},"第二步：安装 QEMU 支持（一般新版 Docker Desktop 已自带，但是Linux必须要安装） 如果你用的是服务器或Linux发行版，确保有 qemu 模拟器：",[270,795,797],{"className":272,"code":796,"language":274,"meta":275,"style":275},"docker run --rm --privileged multiarch\u002Fqemu-user-static --reset -p yes\n",[277,798,799],{"__ignoreMap":275},[151,800,801,803,806,809,812,815,818,821],{"class":281,"line":282},[151,802,307],{"class":306},[151,804,805],{"class":310}," run",[151,807,808],{"class":314}," --rm",[151,810,811],{"class":314}," --privileged",[151,813,814],{"class":310}," multiarch\u002Fqemu-user-static",[151,816,817],{"class":314}," --reset",[151,819,820],{"class":314}," -p",[151,822,823],{"class":310}," yes\n",[10,825,826],{},"电脑重启后，就会消失，所以需要你每次电脑重启后，在buildx命令前，运行一次该命令即可。",[10,828,829],{},"第三步：构建多架构镜像 用下面的命令构建 amd64 和 arm64：",[270,831,833],{"className":272,"code":832,"language":274,"meta":275,"style":275},"docker buildx build --platform linux\u002Famd64,linux\u002Farm64 -t \u003C你的镜像名>:\u003C标签> --push .\n\n# 例子：\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:noetic-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:humble-jammy \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:jazzy-noble \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn971-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn971-noble \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros-opencv:noetic-411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros-opencv:jazzy-411-cuda128-cudnn970-noble \\\n --push \\\n .\n\n  docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t sdutvincirobot\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n",[277,834,835,879,883,888,899,909,918,924,928,932,942,950,960,967,972,977,988,997,1007,1014,1019,1024,1036,1045,1055,1062,1067,1072,1083,1092,1102,1109,1114,1119,1130,1139,1149,1156,1161,1166,1177,1186,1196,1203,1208,1213,1224,1233,1243,1250,1255,1260,1271,1280,1290,1297,1302,1307,1319,1328,1338,1345],{"__ignoreMap":275},[151,836,837,839,841,843,846,849,851,853,856,858,860,863,866,869,872,874,877],{"class":281,"line":282},[151,838,307],{"class":306},[151,840,775],{"class":310},[151,842,311],{"class":310},[151,844,845],{"class":314}," --platform",[151,847,848],{"class":310}," linux\u002Famd64,linux\u002Farm64",[151,850,315],{"class":314},[151,852,495],{"class":494},[151,854,855],{"class":310},"你的镜像",[151,857,502],{"class":501},[151,859,505],{"class":494},[151,861,862],{"class":310},":",[151,864,865],{"class":494},"\u003C",[151,867,868],{"class":310},"标",[151,870,871],{"class":501},"签",[151,873,505],{"class":494},[151,875,876],{"class":314}," --push",[151,878,321],{"class":310},[151,880,881],{"class":281,"line":289},[151,882,286],{"emptyLinePlaceholder":285},[151,884,885],{"class":281,"line":328},[151,886,887],{"class":292},"# 例子：\n",[151,889,890,892,894,896],{"class":281,"line":342},[151,891,307],{"class":306},[151,893,775],{"class":310},[151,895,311],{"class":310},[151,897,898],{"class":314}," \\\n",[151,900,901,904,907],{"class":281,"line":347},[151,902,903],{"class":501},"--platform ",[151,905,906],{"class":310},"linux\u002Famd64,linux\u002Farm64",[151,908,898],{"class":314},[151,910,911,913,916],{"class":281,"line":361},[151,912,315],{"class":314},[151,914,915],{"class":310}," tungchiahui\u002Fros:noetic-focal",[151,917,898],{"class":314},[151,919,920,922],{"class":281,"line":366},[151,921,876],{"class":314},[151,923,898],{"class":314},[151,925,926],{"class":281,"line":380},[151,927,321],{"class":310},[151,929,930],{"class":281,"line":385},[151,931,286],{"emptyLinePlaceholder":285},[151,933,934,936,938,940],{"class":281,"line":399},[151,935,307],{"class":306},[151,937,775],{"class":310},[151,939,311],{"class":310},[151,941,898],{"class":314},[151,943,944,946,948],{"class":281,"line":404},[151,945,903],{"class":501},[151,947,906],{"class":310},[151,949,898],{"class":314},[151,951,953,955,958],{"class":281,"line":952},12,[151,954,315],{"class":314},[151,956,957],{"class":310}," tungchiahui\u002Fros:humble-jammy",[151,959,898],{"class":314},[151,961,963,965],{"class":281,"line":962},13,[151,964,876],{"class":314},[151,966,898],{"class":314},[151,968,970],{"class":281,"line":969},14,[151,971,321],{"class":310},[151,973,975],{"class":281,"line":974},15,[151,976,286],{"emptyLinePlaceholder":285},[151,978,980,982,984,986],{"class":281,"line":979},16,[151,981,307],{"class":306},[151,983,775],{"class":310},[151,985,311],{"class":310},[151,987,898],{"class":314},[151,989,991,993,995],{"class":281,"line":990},17,[151,992,903],{"class":501},[151,994,906],{"class":310},[151,996,898],{"class":314},[151,998,1000,1002,1005],{"class":281,"line":999},18,[151,1001,315],{"class":314},[151,1003,1004],{"class":310}," tungchiahui\u002Fros:jazzy-noble",[151,1006,898],{"class":314},[151,1008,1010,1012],{"class":281,"line":1009},19,[151,1011,876],{"class":314},[151,1013,898],{"class":314},[151,1015,1017],{"class":281,"line":1016},20,[151,1018,321],{"class":310},[151,1020,1022],{"class":281,"line":1021},21,[151,1023,286],{"emptyLinePlaceholder":285},[151,1025,1027,1030,1032,1034],{"class":281,"line":1026},22,[151,1028,1029],{"class":306}," docker",[151,1031,775],{"class":310},[151,1033,311],{"class":310},[151,1035,898],{"class":314},[151,1037,1039,1041,1043],{"class":281,"line":1038},23,[151,1040,903],{"class":501},[151,1042,906],{"class":310},[151,1044,898],{"class":314},[151,1046,1048,1050,1053],{"class":281,"line":1047},24,[151,1049,315],{"class":314},[151,1051,1052],{"class":310}," tungchiahui\u002Fopencv:411-cuda128-cudnn970-focal",[151,1054,898],{"class":314},[151,1056,1058,1060],{"class":281,"line":1057},25,[151,1059,876],{"class":314},[151,1061,898],{"class":314},[151,1063,1065],{"class":281,"line":1064},26,[151,1066,321],{"class":310},[151,1068,1070],{"class":281,"line":1069},27,[151,1071,286],{"emptyLinePlaceholder":285},[151,1073,1075,1077,1079,1081],{"class":281,"line":1074},28,[151,1076,307],{"class":306},[151,1078,775],{"class":310},[151,1080,311],{"class":310},[151,1082,898],{"class":314},[151,1084,1086,1088,1090],{"class":281,"line":1085},29,[151,1087,903],{"class":501},[151,1089,906],{"class":310},[151,1091,898],{"class":314},[151,1093,1095,1097,1100],{"class":281,"line":1094},30,[151,1096,315],{"class":314},[151,1098,1099],{"class":310}," tungchiahui\u002Fopencv:411-cuda128-cudnn971-jammy",[151,1101,898],{"class":314},[151,1103,1105,1107],{"class":281,"line":1104},31,[151,1106,876],{"class":314},[151,1108,898],{"class":314},[151,1110,1112],{"class":281,"line":1111},32,[151,1113,321],{"class":310},[151,1115,1117],{"class":281,"line":1116},33,[151,1118,286],{"emptyLinePlaceholder":285},[151,1120,1122,1124,1126,1128],{"class":281,"line":1121},34,[151,1123,1029],{"class":306},[151,1125,775],{"class":310},[151,1127,311],{"class":310},[151,1129,898],{"class":314},[151,1131,1133,1135,1137],{"class":281,"line":1132},35,[151,1134,903],{"class":501},[151,1136,906],{"class":310},[151,1138,898],{"class":314},[151,1140,1142,1144,1147],{"class":281,"line":1141},36,[151,1143,315],{"class":314},[151,1145,1146],{"class":310}," tungchiahui\u002Fopencv:411-cuda128-cudnn971-noble",[151,1148,898],{"class":314},[151,1150,1152,1154],{"class":281,"line":1151},37,[151,1153,876],{"class":314},[151,1155,898],{"class":314},[151,1157,1159],{"class":281,"line":1158},38,[151,1160,321],{"class":310},[151,1162,1164],{"class":281,"line":1163},39,[151,1165,286],{"emptyLinePlaceholder":285},[151,1167,1169,1171,1173,1175],{"class":281,"line":1168},40,[151,1170,307],{"class":306},[151,1172,775],{"class":310},[151,1174,311],{"class":310},[151,1176,898],{"class":314},[151,1178,1180,1182,1184],{"class":281,"line":1179},41,[151,1181,903],{"class":501},[151,1183,906],{"class":310},[151,1185,898],{"class":314},[151,1187,1189,1191,1194],{"class":281,"line":1188},42,[151,1190,315],{"class":314},[151,1192,1193],{"class":310}," tungchiahui\u002Fros-opencv:noetic-411-cuda128-cudnn970-focal",[151,1195,898],{"class":314},[151,1197,1199,1201],{"class":281,"line":1198},43,[151,1200,876],{"class":314},[151,1202,898],{"class":314},[151,1204,1206],{"class":281,"line":1205},44,[151,1207,321],{"class":310},[151,1209,1211],{"class":281,"line":1210},45,[151,1212,286],{"emptyLinePlaceholder":285},[151,1214,1216,1218,1220,1222],{"class":281,"line":1215},46,[151,1217,307],{"class":306},[151,1219,775],{"class":310},[151,1221,311],{"class":310},[151,1223,898],{"class":314},[151,1225,1227,1229,1231],{"class":281,"line":1226},47,[151,1228,903],{"class":501},[151,1230,906],{"class":310},[151,1232,898],{"class":314},[151,1234,1236,1238,1241],{"class":281,"line":1235},48,[151,1237,315],{"class":314},[151,1239,1240],{"class":310}," tungchiahui\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy",[151,1242,898],{"class":314},[151,1244,1246,1248],{"class":281,"line":1245},49,[151,1247,876],{"class":314},[151,1249,898],{"class":314},[151,1251,1253],{"class":281,"line":1252},50,[151,1254,321],{"class":310},[151,1256,1258],{"class":281,"line":1257},51,[151,1259,286],{"emptyLinePlaceholder":285},[151,1261,1263,1265,1267,1269],{"class":281,"line":1262},52,[151,1264,1029],{"class":306},[151,1266,775],{"class":310},[151,1268,311],{"class":310},[151,1270,898],{"class":314},[151,1272,1274,1276,1278],{"class":281,"line":1273},53,[151,1275,903],{"class":501},[151,1277,906],{"class":310},[151,1279,898],{"class":314},[151,1281,1283,1285,1288],{"class":281,"line":1282},54,[151,1284,315],{"class":314},[151,1286,1287],{"class":310}," tungchiahui\u002Fros-opencv:jazzy-411-cuda128-cudnn970-noble",[151,1289,898],{"class":314},[151,1291,1293,1295],{"class":281,"line":1292},55,[151,1294,876],{"class":314},[151,1296,898],{"class":314},[151,1298,1300],{"class":281,"line":1299},56,[151,1301,321],{"class":310},[151,1303,1305],{"class":281,"line":1304},57,[151,1306,286],{"emptyLinePlaceholder":285},[151,1308,1310,1313,1315,1317],{"class":281,"line":1309},58,[151,1311,1312],{"class":306},"  docker",[151,1314,775],{"class":310},[151,1316,311],{"class":310},[151,1318,898],{"class":314},[151,1320,1322,1324,1326],{"class":281,"line":1321},59,[151,1323,903],{"class":501},[151,1325,906],{"class":310},[151,1327,898],{"class":314},[151,1329,1331,1333,1336],{"class":281,"line":1330},60,[151,1332,315],{"class":314},[151,1334,1335],{"class":310}," sdutvincirobot\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy",[151,1337,898],{"class":314},[151,1339,1341,1343],{"class":281,"line":1340},61,[151,1342,876],{"class":314},[151,1344,898],{"class":314},[151,1346,1348],{"class":281,"line":1347},62,[151,1349,321],{"class":310},[10,1351,1352],{},"说明： --platform 指定多架构。 --push 是必须的，因为 buildx 的多平台构建默认是不能本地加载的（除非加 --load，但那只能支持单一架构）。",[10,1354,1355],{},[419,1356],{"alt":275,"src":1357},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage18.webp",[10,1359,1360],{},[419,1361],{"alt":275,"src":1362},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage19.webp",[260,1364,1365],{"id":1365},"清除构建缓存",[270,1367,1371],{"className":1368,"code":1369,"language":1370,"meta":275,"style":275},"language-C++ shiki shiki-themes github-light github-dark","\n# 清理BuildKit构建缓存\ndocker builder prune -f  \n","C++",[277,1372,1373,1377,1382],{"__ignoreMap":275},[151,1374,1375],{"class":281,"line":282},[151,1376,286],{"emptyLinePlaceholder":285},[151,1378,1379],{"class":281,"line":289},[151,1380,1381],{"class":501},"# 清理BuildKit构建缓存\n",[151,1383,1384,1387,1390],{"class":281,"line":328},[151,1385,1386],{"class":501},"docker builder prune ",[151,1388,1389],{"class":494},"-",[151,1391,1392],{"class":501},"f\n",[10,1394,1395],{},[419,1396],{"alt":275,"src":1397},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F10\u002F03\u002Fimage20.webp",[1399,1400,1401],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":275,"searchDepth":289,"depth":289,"links":1403},[1404,1405],{"id":19,"depth":328,"text":20},{"id":258,"depth":328,"text":258},"8",8000000,"2024-10-03","2024-10-03-docker-jiao-cheng","\u002Fwiki\u002F2024-10-03-docker-jiao-cheng","Docker教程","md",false,{},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch8-shou-dong-chuang-jian-docker-jing-xiang",{"title":5,"description":15},"wiki\u002F2024-10-03-Docker教程\u002Fch8-手动创建Docker镜像","36stg3_osJsBwGZ1ULfu5vpklPMDzTfpMNo0umV2CoI",[1420,1426,1432,1438,1444,1450,1456,1462,1468,1474,1475,1481],{"path":1421,"stem":1422,"title":1423,"date":1408,"chapter":1424,"chapterSort":1425,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch1-jian-jie","wiki\u002F2024-10-03-Docker教程\u002Fch1-简介","简介","1",1000000,{"path":1427,"stem":1428,"title":1429,"date":1408,"chapter":1430,"chapterSort":1431,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch10-1-kuai-su-da-kai-zhong-duan","wiki\u002F2024-10-03-Docker教程\u002Fch10-1-快速打开终端","Docker快速打开终端","10.1",10010000,{"path":1433,"stem":1434,"title":1435,"date":1408,"chapter":1436,"chapterSort":1437,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch10-docker-shi-yong-you-hua","wiki\u002F2024-10-03-Docker教程\u002Fch10-Docker使用优化","Docker使用优化","10",10000000,{"path":1439,"stem":1440,"title":1441,"date":1408,"chapter":1442,"chapterSort":1443,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch2-an-zhuang-docker","wiki\u002F2024-10-03-Docker教程\u002Fch2-安装Docker","安装Docker","2",2000000,{"path":1445,"stem":1446,"title":1447,"date":1408,"chapter":1448,"chapterSort":1449,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch3-docker-zhi-tong","wiki\u002F2024-10-03-Docker教程\u002Fch3-Docker直通","Docker直通","3",3000000,{"path":1451,"stem":1452,"title":1453,"date":1408,"chapter":1454,"chapterSort":1455,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch4-dockerhub-huan-yuan","wiki\u002F2024-10-03-Docker教程\u002Fch4-DockerHub换源","DockerHub换源","4",4000000,{"path":1457,"stem":1458,"title":1459,"date":1408,"chapter":1460,"chapterSort":1461,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch5-docker-rong-qi-li-de-cheng-xu-de-tu-xing-jie-mian-tan-bu-chu-lai","wiki\u002F2024-10-03-Docker教程\u002Fch5-docker容器里的程序的图形界面弹不出来","docker容器里的程序的图形界面弹不出来","5",5000000,{"path":1463,"stem":1464,"title":1465,"date":1408,"chapter":1466,"chapterSort":1467,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch6-docker-ming-ling-xue-xi","wiki\u002F2024-10-03-Docker教程\u002Fch6-Docker命令学习","Docker命令学习","6",6000000,{"path":1469,"stem":1470,"title":1471,"date":1408,"chapter":1472,"chapterSort":1473,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch7-ge-zhong-docker-rong-qi-bu-shu","wiki\u002F2024-10-03-Docker教程\u002Fch7-各种Docker容器部署","各种Docker容器部署","7",7000000,{"path":1415,"stem":1417,"title":5,"date":1408,"chapter":1406,"chapterSort":1407,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},{"path":1476,"stem":1477,"title":1478,"date":1408,"chapter":1479,"chapterSort":1480,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":1413},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng\u002Fch9-vscode-yuan-cheng-kai-fa","wiki\u002F2024-10-03-Docker教程\u002Fch9-VScode远程开发","VScode远程开发","9",9000000,{"path":1410,"stem":1482,"title":1411,"date":1408,"chapter":1483,"chapterSort":1484,"docKey":1409,"docRoot":1410,"docTitle":1411,"isWikiDoc":285,"isWikiIndex":285},"wiki\u002F2024-10-03-Docker教程\u002Findex",null,0,1778666543882]