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