[{"data":1,"prerenderedAt":1484},["ShallowReactive",2],{"wiki-page-/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang":3,"wiki-doc-items-/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang":1403,"language-switcher-data-/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang":1468,"wiki-i18n-paths-/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang":1483},{"id":4,"title":5,"body":6,"canonicalPath":1384,"chapter":1385,"chapterSort":1386,"date":1387,"description":15,"docI18nKey":1388,"docKey":1389,"docRoot":1390,"docTitle":1391,"extension":1392,"i18nKey":1393,"isBlogPost":1394,"isWikiDoc":283,"isWikiIndex":1394,"layout":1395,"legacyPath":1395,"locale":1396,"localeSlug":1397,"meta":1398,"navigation":283,"path":1384,"seo":1399,"sourcePath":1400,"sourceStem":1393,"stem":1401,"wikiDepth":280,"__hash__":1402},"content/_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch8-手动创建Docker镜像.md","手動創建Docker鏡像",{"type":7,"value":8,"toc":1380},"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,771,774,777,807,810,813,1334,1337,1342,1347,1350,1371,1376],[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 . /app",[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 /data/",[28,129,130,133,136],{},[47,131,132],{"align":33},"WORKDIR",[47,134,135],{"align":33},"設置工作目錄",[47,137,138],{"align":33},"WORKDIR /opt",[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],{},"\"/data\"",[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 . /src",[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],{},"\"/bin/bash\", \"-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://localhost: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://github.com/tungchiahui/ros-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://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image14.webp",[10,421,422],{},"鏡像大小5GB(壓縮後的大小詳見DockerHub)",[10,424,425],{},[417,426],{"alt":274,"src":427},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image15.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用户名>/\u003C镜像名>:\u003C标签>"," 的格式來標識鏡像。你需要爲你的鏡像打上標籤，以便能夠推送到 Docker Hub。使用以下命令：",[269,477,479],{"className":271,"code":478,"language":273,"meta":274,"style":274},"docker tag ros-jazzy-noble:latest \u003C你的用户名>/ros-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},"/ros-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/ros-noetic-focal:latest\n\ndocker tag ros-humble-jammy:latest tungchiahui/ros-humble-jammy:latest\n\ndocker tag ros-jazzy-noble:latest tungchiahui/ros-jazzy-noble:latest\n\ndocker tag ros-humble-opencv411-cuda128-cudnn970-jammy:latest tungchiahui/ros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker tag ros-jazzy-opencv411-cuda128-cudnn970-noble:latest tungchiahui/ros-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/ros-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/ros-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/ros-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/ros-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/ros-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你的用户名>/ros-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},"/ros-noetic-jazzy-noble:latest\n",[10,622,623],{},"例如：",[269,625,627],{"className":271,"code":626,"language":273,"meta":274,"style":274},"docker push tungchiahui/ros-noetic-focal:latest\n\ndocker push tungchiahui/ros-humble-jammy:latest\n\ndocker push tungchiahui/ros-jazzy-noble:latest\n\ndocker push tungchiahui/ros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker push tungchiahui/ros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n\ndocker push tungchiahui/ros-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/ros-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://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image16.webp",[10,726,727],{},[417,728],{"alt":274,"src":729},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image17.webp",[258,731,733],{"id":732},"手動創建跨平臺多架構構建","手動創建(跨平臺多架構構建)",[10,735,736,737,740,741,744],{},"如果您想在 ",[13,738,739],{},"x86/x64 電腦上即爲本機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],{"class":279,"line":280},[151,770,763],{},[10,772,773],{},"這會創建並啓用一個支持多架構構建的 builder，電腦重啓後也依然存在，所以只用運行一次。",[10,775,776],{},"第二步：安裝 QEMU 支持（一般新版 Docker Desktop 已自帶，但是Linux必須要安裝） 如果你用的是服務器或Linux發行版，確保有 qemu 模擬器：",[269,778,780],{"className":271,"code":779,"language":273,"meta":274,"style":274},"docker run --rm --privileged multiarch/qemu-user-static --reset -p yes\n",[240,781,782],{"__ignoreMap":274},[151,783,784,786,789,792,795,798,801,804],{"class":279,"line":280},[151,785,305],{"class":304},[151,787,788],{"class":308}," run",[151,790,791],{"class":312}," --rm",[151,793,794],{"class":312}," --privileged",[151,796,797],{"class":308}," multiarch/qemu-user-static",[151,799,800],{"class":312}," --reset",[151,802,803],{"class":312}," -p",[151,805,806],{"class":308}," yes\n",[10,808,809],{},"電腦重啓後，就會消失，所以需要你每次電腦重啓後，在buildx命令前，運行一次該命令即可。",[10,811,812],{},"第三步：構建多架構鏡像 用下面的命令構建 amd64 和 arm64：",[269,814,816],{"className":271,"code":815,"language":273,"meta":274,"style":274},"docker buildx build --platform linux/amd64,linux/arm64 -t \u003C你的镜像名>:\u003C标签> --push .\n\n# 例子：\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros:noetic-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros:humble-jammy \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros:jazzy-noble \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/opencv:411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/opencv:411-cuda128-cudnn971-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/opencv:411-cuda128-cudnn971-noble \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros-opencv:noetic-411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t tungchiahui/ros-opencv:jazzy-411-cuda128-cudnn970-noble \\\n --push \\\n .\n\n  docker buildx build \\\n--platform linux/amd64,linux/arm64 \\\n -t sdutvincirobot/ros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n",[240,817,818,863,867,872,883,893,902,908,912,916,926,934,944,951,956,961,972,981,991,998,1003,1008,1020,1029,1039,1046,1051,1056,1067,1076,1086,1093,1098,1103,1114,1123,1133,1140,1145,1150,1161,1170,1180,1187,1192,1197,1208,1217,1227,1234,1239,1244,1255,1264,1274,1281,1286,1291,1303,1312,1322,1329],{"__ignoreMap":274},[151,819,820,822,825,827,830,833,835,837,840,842,844,847,850,853,856,858,861],{"class":279,"line":280},[151,821,305],{"class":304},[151,823,824],{"class":308}," buildx",[151,826,309],{"class":308},[151,828,829],{"class":312}," --platform",[151,831,832],{"class":308}," linux/amd64,linux/arm64",[151,834,313],{"class":312},[151,836,493],{"class":492},[151,838,839],{"class":308},"你的镜像",[151,841,500],{"class":499},[151,843,503],{"class":492},[151,845,846],{"class":308},":",[151,848,849],{"class":492},"\u003C",[151,851,852],{"class":308},"标",[151,854,855],{"class":499},"签",[151,857,503],{"class":492},[151,859,860],{"class":312}," --push",[151,862,319],{"class":308},[151,864,865],{"class":279,"line":287},[151,866,284],{"emptyLinePlaceholder":283},[151,868,869],{"class":279,"line":326},[151,870,871],{"class":290},"# 例子：\n",[151,873,874,876,878,880],{"class":279,"line":340},[151,875,305],{"class":304},[151,877,824],{"class":308},[151,879,309],{"class":308},[151,881,882],{"class":312}," \\\n",[151,884,885,888,891],{"class":279,"line":345},[151,886,887],{"class":499},"--platform ",[151,889,890],{"class":308},"linux/amd64,linux/arm64",[151,892,882],{"class":312},[151,894,895,897,900],{"class":279,"line":359},[151,896,313],{"class":312},[151,898,899],{"class":308}," tungchiahui/ros:noetic-focal",[151,901,882],{"class":312},[151,903,904,906],{"class":279,"line":364},[151,905,860],{"class":312},[151,907,882],{"class":312},[151,909,910],{"class":279,"line":378},[151,911,319],{"class":308},[151,913,914],{"class":279,"line":383},[151,915,284],{"emptyLinePlaceholder":283},[151,917,918,920,922,924],{"class":279,"line":397},[151,919,305],{"class":304},[151,921,824],{"class":308},[151,923,309],{"class":308},[151,925,882],{"class":312},[151,927,928,930,932],{"class":279,"line":402},[151,929,887],{"class":499},[151,931,890],{"class":308},[151,933,882],{"class":312},[151,935,937,939,942],{"class":279,"line":936},12,[151,938,313],{"class":312},[151,940,941],{"class":308}," tungchiahui/ros:humble-jammy",[151,943,882],{"class":312},[151,945,947,949],{"class":279,"line":946},13,[151,948,860],{"class":312},[151,950,882],{"class":312},[151,952,954],{"class":279,"line":953},14,[151,955,319],{"class":308},[151,957,959],{"class":279,"line":958},15,[151,960,284],{"emptyLinePlaceholder":283},[151,962,964,966,968,970],{"class":279,"line":963},16,[151,965,305],{"class":304},[151,967,824],{"class":308},[151,969,309],{"class":308},[151,971,882],{"class":312},[151,973,975,977,979],{"class":279,"line":974},17,[151,976,887],{"class":499},[151,978,890],{"class":308},[151,980,882],{"class":312},[151,982,984,986,989],{"class":279,"line":983},18,[151,985,313],{"class":312},[151,987,988],{"class":308}," tungchiahui/ros:jazzy-noble",[151,990,882],{"class":312},[151,992,994,996],{"class":279,"line":993},19,[151,995,860],{"class":312},[151,997,882],{"class":312},[151,999,1001],{"class":279,"line":1000},20,[151,1002,319],{"class":308},[151,1004,1006],{"class":279,"line":1005},21,[151,1007,284],{"emptyLinePlaceholder":283},[151,1009,1011,1014,1016,1018],{"class":279,"line":1010},22,[151,1012,1013],{"class":304}," docker",[151,1015,824],{"class":308},[151,1017,309],{"class":308},[151,1019,882],{"class":312},[151,1021,1023,1025,1027],{"class":279,"line":1022},23,[151,1024,887],{"class":499},[151,1026,890],{"class":308},[151,1028,882],{"class":312},[151,1030,1032,1034,1037],{"class":279,"line":1031},24,[151,1033,313],{"class":312},[151,1035,1036],{"class":308}," tungchiahui/opencv:411-cuda128-cudnn970-focal",[151,1038,882],{"class":312},[151,1040,1042,1044],{"class":279,"line":1041},25,[151,1043,860],{"class":312},[151,1045,882],{"class":312},[151,1047,1049],{"class":279,"line":1048},26,[151,1050,319],{"class":308},[151,1052,1054],{"class":279,"line":1053},27,[151,1055,284],{"emptyLinePlaceholder":283},[151,1057,1059,1061,1063,1065],{"class":279,"line":1058},28,[151,1060,305],{"class":304},[151,1062,824],{"class":308},[151,1064,309],{"class":308},[151,1066,882],{"class":312},[151,1068,1070,1072,1074],{"class":279,"line":1069},29,[151,1071,887],{"class":499},[151,1073,890],{"class":308},[151,1075,882],{"class":312},[151,1077,1079,1081,1084],{"class":279,"line":1078},30,[151,1080,313],{"class":312},[151,1082,1083],{"class":308}," tungchiahui/opencv:411-cuda128-cudnn971-jammy",[151,1085,882],{"class":312},[151,1087,1089,1091],{"class":279,"line":1088},31,[151,1090,860],{"class":312},[151,1092,882],{"class":312},[151,1094,1096],{"class":279,"line":1095},32,[151,1097,319],{"class":308},[151,1099,1101],{"class":279,"line":1100},33,[151,1102,284],{"emptyLinePlaceholder":283},[151,1104,1106,1108,1110,1112],{"class":279,"line":1105},34,[151,1107,1013],{"class":304},[151,1109,824],{"class":308},[151,1111,309],{"class":308},[151,1113,882],{"class":312},[151,1115,1117,1119,1121],{"class":279,"line":1116},35,[151,1118,887],{"class":499},[151,1120,890],{"class":308},[151,1122,882],{"class":312},[151,1124,1126,1128,1131],{"class":279,"line":1125},36,[151,1127,313],{"class":312},[151,1129,1130],{"class":308}," tungchiahui/opencv:411-cuda128-cudnn971-noble",[151,1132,882],{"class":312},[151,1134,1136,1138],{"class":279,"line":1135},37,[151,1137,860],{"class":312},[151,1139,882],{"class":312},[151,1141,1143],{"class":279,"line":1142},38,[151,1144,319],{"class":308},[151,1146,1148],{"class":279,"line":1147},39,[151,1149,284],{"emptyLinePlaceholder":283},[151,1151,1153,1155,1157,1159],{"class":279,"line":1152},40,[151,1154,305],{"class":304},[151,1156,824],{"class":308},[151,1158,309],{"class":308},[151,1160,882],{"class":312},[151,1162,1164,1166,1168],{"class":279,"line":1163},41,[151,1165,887],{"class":499},[151,1167,890],{"class":308},[151,1169,882],{"class":312},[151,1171,1173,1175,1178],{"class":279,"line":1172},42,[151,1174,313],{"class":312},[151,1176,1177],{"class":308}," tungchiahui/ros-opencv:noetic-411-cuda128-cudnn970-focal",[151,1179,882],{"class":312},[151,1181,1183,1185],{"class":279,"line":1182},43,[151,1184,860],{"class":312},[151,1186,882],{"class":312},[151,1188,1190],{"class":279,"line":1189},44,[151,1191,319],{"class":308},[151,1193,1195],{"class":279,"line":1194},45,[151,1196,284],{"emptyLinePlaceholder":283},[151,1198,1200,1202,1204,1206],{"class":279,"line":1199},46,[151,1201,305],{"class":304},[151,1203,824],{"class":308},[151,1205,309],{"class":308},[151,1207,882],{"class":312},[151,1209,1211,1213,1215],{"class":279,"line":1210},47,[151,1212,887],{"class":499},[151,1214,890],{"class":308},[151,1216,882],{"class":312},[151,1218,1220,1222,1225],{"class":279,"line":1219},48,[151,1221,313],{"class":312},[151,1223,1224],{"class":308}," tungchiahui/ros-opencv:humble-411-cuda128-cudnn970-jammy",[151,1226,882],{"class":312},[151,1228,1230,1232],{"class":279,"line":1229},49,[151,1231,860],{"class":312},[151,1233,882],{"class":312},[151,1235,1237],{"class":279,"line":1236},50,[151,1238,319],{"class":308},[151,1240,1242],{"class":279,"line":1241},51,[151,1243,284],{"emptyLinePlaceholder":283},[151,1245,1247,1249,1251,1253],{"class":279,"line":1246},52,[151,1248,1013],{"class":304},[151,1250,824],{"class":308},[151,1252,309],{"class":308},[151,1254,882],{"class":312},[151,1256,1258,1260,1262],{"class":279,"line":1257},53,[151,1259,887],{"class":499},[151,1261,890],{"class":308},[151,1263,882],{"class":312},[151,1265,1267,1269,1272],{"class":279,"line":1266},54,[151,1268,313],{"class":312},[151,1270,1271],{"class":308}," tungchiahui/ros-opencv:jazzy-411-cuda128-cudnn970-noble",[151,1273,882],{"class":312},[151,1275,1277,1279],{"class":279,"line":1276},55,[151,1278,860],{"class":312},[151,1280,882],{"class":312},[151,1282,1284],{"class":279,"line":1283},56,[151,1285,319],{"class":308},[151,1287,1289],{"class":279,"line":1288},57,[151,1290,284],{"emptyLinePlaceholder":283},[151,1292,1294,1297,1299,1301],{"class":279,"line":1293},58,[151,1295,1296],{"class":304},"  docker",[151,1298,824],{"class":308},[151,1300,309],{"class":308},[151,1302,882],{"class":312},[151,1304,1306,1308,1310],{"class":279,"line":1305},59,[151,1307,887],{"class":499},[151,1309,890],{"class":308},[151,1311,882],{"class":312},[151,1313,1315,1317,1320],{"class":279,"line":1314},60,[151,1316,313],{"class":312},[151,1318,1319],{"class":308}," sdutvincirobot/ros-opencv:humble-411-cuda128-cudnn970-jammy",[151,1321,882],{"class":312},[151,1323,1325,1327],{"class":279,"line":1324},61,[151,1326,860],{"class":312},[151,1328,882],{"class":312},[151,1330,1332],{"class":279,"line":1331},62,[151,1333,319],{"class":308},[10,1335,1336],{},"說明： --platform 指定多架構。 --push 是必須的，因爲 buildx 的多平臺構建默認是不能本地加載的（除非加 --load，但那隻能支持單一架構）。",[10,1338,1339],{},[417,1340],{"alt":274,"src":1341},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image18.webp",[10,1343,1344],{},[417,1345],{"alt":274,"src":1346},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image19.webp",[258,1348,1349],{"id":1349},"清除構建緩存",[269,1351,1355],{"className":1352,"code":1353,"language":1354,"meta":274,"style":274},"language-C++ shiki shiki-themes github-light github-dark","\n# 清理BuildKit构建缓存\ndocker builder prune -f  \n","C++",[240,1356,1357,1361,1366],{"__ignoreMap":274},[151,1358,1359],{"class":279,"line":280},[151,1360,284],{"emptyLinePlaceholder":283},[151,1362,1363],{"class":279,"line":287},[151,1364,1365],{},"# 清理BuildKit构建缓存\n",[151,1367,1368],{"class":279,"line":326},[151,1369,1370],{},"docker builder prune -f\n",[10,1372,1373],{},[417,1374],{"alt":274,"src":1375},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image20.webp",[1377,1378,1379],"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":1381},[1382,1383],{"id":19,"depth":326,"text":20},{"id":256,"depth":326,"text":256},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","8",8000000,"2024-10-03","wiki/2024-10-03-docker-jiao-cheng","zh-hant:2024-10-03-docker-jiao-cheng","/zh-hant/wiki/2024-10-03-docker-jiao-cheng","Docker教程","md","wiki/2024-10-03-Docker教程/ch8-手动创建Docker镜像",false,null,"zh-Hant","zh-hant",{},{"title":5,"description":15},"/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch8-手动创建Docker镜像","nRcWyvzXApfttsl-QkKbeEJFRXKK175ux48yxAo7D00",[1404,1410,1416,1422,1428,1434,1440,1446,1452,1458,1459,1465],{"path":1405,"stem":1406,"title":1407,"date":1387,"chapter":1408,"chapterSort":1409,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch1-jian-jie","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch1-简介","簡介","1",1000000,{"path":1411,"stem":1412,"title":1413,"date":1387,"chapter":1414,"chapterSort":1415,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch10-1-kuai-su-da-kai-zhong-duan","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch10-1-快速打开终端","Docker快速打開終端","10.1",10010000,{"path":1417,"stem":1418,"title":1419,"date":1387,"chapter":1420,"chapterSort":1421,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch10-docker-shi-yong-you-hua","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch10-Docker使用优化","Docker使用優化","10",10000000,{"path":1423,"stem":1424,"title":1425,"date":1387,"chapter":1426,"chapterSort":1427,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch2-an-zhuang-docker","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch2-安装Docker","安裝Docker","2",2000000,{"path":1429,"stem":1430,"title":1431,"date":1387,"chapter":1432,"chapterSort":1433,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch3-Docker直通","Docker直通","3",3000000,{"path":1435,"stem":1436,"title":1437,"date":1387,"chapter":1438,"chapterSort":1439,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch4-dockerhub-huan-yuan","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch4-DockerHub换源","DockerHub換源","4",4000000,{"path":1441,"stem":1442,"title":1443,"date":1387,"chapter":1444,"chapterSort":1445,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch5-docker-rong-qi-li-de-cheng-xu-de-tu-xing-jie-mian-tan-bu-chu-lai","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch5-docker容器里的程序的图形界面弹不出来","docker容器裏的程序的圖形界面彈不出來","5",5000000,{"path":1447,"stem":1448,"title":1449,"date":1387,"chapter":1450,"chapterSort":1451,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch6-docker-ming-ling-xue-xi","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch6-Docker命令学习","Docker命令學習","6",6000000,{"path":1453,"stem":1454,"title":1455,"date":1387,"chapter":1456,"chapterSort":1457,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch7-ge-zhong-docker-rong-qi-bu-shu","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch7-各种Docker容器部署","各種Docker容器部署","7",7000000,{"path":1384,"stem":1401,"title":5,"date":1387,"chapter":1385,"chapterSort":1386,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},{"path":1460,"stem":1461,"title":1462,"date":1387,"chapter":1463,"chapterSort":1464,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":1394},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch9-vscode-yuan-cheng-kai-fa","_i18n/zh-hant/wiki/2024-10-03-Docker教程/ch9-VScode远程开发","VScode遠程開發","9",9000000,{"path":1390,"stem":1466,"title":1391,"date":1387,"chapter":1395,"chapterSort":1467,"docKey":1389,"docRoot":1390,"docTitle":1391,"isWikiDoc":283,"isWikiIndex":283},"_i18n/zh-hant/wiki/2024-10-03-Docker教程/index",0,{"variants":1469},[1470,1473,1474,1477,1480],{"path":1471,"localeSlug":1472,"i18nKey":1393},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","en-us",{"path":1384,"localeSlug":1397,"i18nKey":1393},{"path":1475,"localeSlug":1476,"i18nKey":1393},"/zh-hk/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","zh-hk",{"path":1478,"localeSlug":1479,"i18nKey":1393},"/zh-tw/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","zh-tw",{"path":1481,"localeSlug":1482,"i18nKey":1393},"/zh-cn/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","zh-cn",[1471,1400,1384,1400,1475,1400,1478,1400,1481,1400],1780671825513]