[{"data":1,"prerenderedAt":881},["ShallowReactive",2],{"wiki-page-/en-us/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong":3,"wiki-doc-items-/en-us/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong":799,"language-switcher-data-/en-us/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong":865,"wiki-i18n-paths-/en-us/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong":880},{"id":4,"title":5,"body":6,"canonicalPath":780,"chapter":781,"chapterSort":782,"date":783,"description":20,"docI18nKey":784,"docKey":785,"docRoot":786,"docTitle":787,"extension":788,"i18nKey":789,"isBlogPost":790,"isWikiDoc":374,"isWikiIndex":790,"layout":791,"legacyPath":791,"locale":792,"localeSlug":793,"meta":794,"navigation":374,"path":780,"seo":795,"sourcePath":796,"sourceStem":789,"stem":797,"wikiDepth":45,"__hash__":798},"content/_i18n/en-us/wiki/2024-10-03-Docker教程/ch3-Docker直通.md","Docker Passthrough",{"type":7,"value":8,"toc":774},"minimark",[9,14,22,29,32,75,80,89,92,97,101,109,114,122,127,130,135,140,243,248,269,278,299,304,322,326,331,360,365,420,425,473,484,501,509,525,533,547,554,558,566,573,603,608,613,617,620,623,629,632,635,638,707,714,719,722,746,750,767,770],[10,11,13],"h3",{"id":12},"usb-passthrough","USB passthrough",[15,16,17],"p",{},[18,19],"img",{"alt":20,"src":21},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image5.webp",[23,24,25],"ol",{},[26,27,28],"li",{},"Method 1 (not recommended for beginners):",[15,30,31],{},"When creating the container, simply add the required devices in the red section here. You can use the following command to check the name of the desired device.",[33,34,38],"pre",{"className":35,"code":36,"language":37,"meta":20,"style":20},"language-bash shiki shiki-themes github-light github-dark","ls /dev\n#例如\n--device=/dev/tty_USB0\n","bash",[39,40,41,54,61],"code",{"__ignoreMap":20},[42,43,46,50],"span",{"class":44,"line":45},"line",1,[42,47,49],{"class":48},"sScJk","ls",[42,51,53],{"class":52},"sZZnC"," /dev\n",[42,55,57],{"class":44,"line":56},2,[42,58,60],{"class":59},"sJ8bj","#例如\n",[42,62,64,68,72],{"class":44,"line":63},3,[42,65,67],{"class":66},"sVt8B","--device",[42,69,71],{"class":70},"szBVR","=",[42,73,74],{"class":52},"/dev/tty_USB0\n",[23,76,77],{"start":56},[26,78,79],{},"Method 2 (I personally recommend this one, as it avoids the need to remount. Although security is slightly reduced, the probability of someone exploiting security permissions to attack you is extremely low; such precautions are only necessary for enterprise servers):",[33,81,83],{"className":35,"code":82,"language":37,"meta":20,"style":20},"--privileged\n",[39,84,85],{"__ignoreMap":20},[42,86,87],{"class":44,"line":45},[42,88,82],{"class":48},[15,90,91],{},"Just add one line in green, and then all devices will be mounted to Docker. (No need to write the red part.)",[15,93,94],{},[18,95],{"alt":20,"src":96},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image6.webp",[10,98,100],{"id":99},"nvidia-gpu-passthrough","NVIDIA GPU passthrough",[15,102,103,104,108],{},"The NVIDIA Container Toolkit enables users ",[105,106,107],"strong",{},"to build and run GPU-accelerated containers",". The toolkit includes a container runtime library and utilities for automatically configuring containers to leverage NVIDIA GPUs.",[15,110,111],{},[18,112],{"alt":20,"src":113},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image7.webp",[15,115,116],{},[117,118,119],"a",{"href":119,"rel":120},"https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html",[121],"nofollow",[123,124,126],"h4",{"id":125},"install","Install",[15,128,129],{},"(Prefer official sources whenever possible, as installation methods may be updated.)",[131,132,134],"h5",{"id":133},"ubuntu","Ubuntu",[23,136,137],{},[26,138,139],{},"Configure the repository and update it.",[33,141,143],{"className":35,"code":142,"language":37,"meta":20,"style":20},"curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \\\n    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \\\n  && \\\n    sudo apt-get update\n",[39,144,145,178,198,210,224,232],{"__ignoreMap":20},[42,146,147,150,154,157,160,163,166,169,172,175],{"class":44,"line":45},[42,148,149],{"class":48},"curl",[42,151,153],{"class":152},"sj4cs"," -fsSL",[42,155,156],{"class":52}," https://nvidia.github.io/libnvidia-container/gpgkey",[42,158,159],{"class":70}," |",[42,161,162],{"class":48}," sudo",[42,164,165],{"class":52}," gpg",[42,167,168],{"class":152}," --dearmor",[42,170,171],{"class":152}," -o",[42,173,174],{"class":52}," /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg",[42,176,177],{"class":152}," \\\n",[42,179,180,183,185,188,191,194,196],{"class":44,"line":56},[42,181,182],{"class":66},"  && ",[42,184,149],{"class":48},[42,186,187],{"class":152}," -s",[42,189,190],{"class":152}," -L",[42,192,193],{"class":52}," https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list",[42,195,159],{"class":70},[42,197,177],{"class":152},[42,199,200,203,206,208],{"class":44,"line":63},[42,201,202],{"class":48},"    sed",[42,204,205],{"class":52}," 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'",[42,207,159],{"class":70},[42,209,177],{"class":152},[42,211,213,216,219,222],{"class":44,"line":212},4,[42,214,215],{"class":48},"    sudo",[42,217,218],{"class":52}," tee",[42,220,221],{"class":52}," /etc/apt/sources.list.d/nvidia-container-toolkit.list",[42,223,177],{"class":152},[42,225,227,229],{"class":44,"line":226},5,[42,228,182],{"class":66},[42,230,231],{"class":152},"\\\n",[42,233,235,237,240],{"class":44,"line":234},6,[42,236,215],{"class":48},[42,238,239],{"class":52}," apt-get",[42,241,242],{"class":52}," update\n",[23,244,245],{"start":56},[26,246,247],{},"Install nvidia-docker2",[33,249,251],{"className":35,"code":250,"language":37,"meta":20,"style":20},"sudo apt-get install -y nvidia-docker2\n",[39,252,253],{"__ignoreMap":20},[42,254,255,258,260,263,266],{"class":44,"line":45},[42,256,257],{"class":48},"sudo",[42,259,239],{"class":52},[42,261,262],{"class":52}," install",[42,264,265],{"class":152}," -y",[42,267,268],{"class":52}," nvidia-docker2\n",[23,270,271],{"start":63},[26,272,273,274,277],{},"Use the ",[39,275,276],{},"nvidia-ctk"," command to configure the container runtime.",[33,279,281],{"className":35,"code":280,"language":37,"meta":20,"style":20},"sudo nvidia-ctk runtime configure --runtime=docker\n",[39,282,283],{"__ignoreMap":20},[42,284,285,287,290,293,296],{"class":44,"line":45},[42,286,257],{"class":48},[42,288,289],{"class":52}," nvidia-ctk",[42,291,292],{"class":52}," runtime",[42,294,295],{"class":52}," configure",[42,297,298],{"class":152}," --runtime=docker\n",[23,300,301],{"start":212},[26,302,303],{},"Restart the Docker service.",[33,305,307],{"className":35,"code":306,"language":37,"meta":20,"style":20},"sudo systemctl restart docker\n",[39,308,309],{"__ignoreMap":20},[42,310,311,313,316,319],{"class":44,"line":45},[42,312,257],{"class":48},[42,314,315],{"class":52}," systemctl",[42,317,318],{"class":52}," restart",[42,320,321],{"class":52}," docker\n",[131,323,325],{"id":324},"fedora","Fedora",[23,327,328],{},[26,329,330],{},"Configure the production repository:",[33,332,334],{"className":35,"code":333,"language":37,"meta":20,"style":20},"curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \\\nsudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo\n",[39,335,336,351],{"__ignoreMap":20},[42,337,338,340,342,344,347,349],{"class":44,"line":45},[42,339,149],{"class":48},[42,341,187],{"class":152},[42,343,190],{"class":152},[42,345,346],{"class":52}," https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo",[42,348,159],{"class":70},[42,350,177],{"class":152},[42,352,353,355,357],{"class":44,"line":56},[42,354,257],{"class":48},[42,356,218],{"class":52},[42,358,359],{"class":52}," /etc/yum.repos.d/nvidia-container-toolkit.repo\n",[23,361,362],{"start":56},[26,363,364],{},"Optionally, configure the repository to use experimental packages:",[33,366,368],{"className":35,"code":367,"language":37,"meta":20,"style":20},"\n# 如果是RHEL或者Rocky（DNF4）\nsudo dnf config-manager --add-repo https://nvidia.github.io/libnvidia-container/stable/rpm/libnvidia-container.repo\n\n# 如果是Feodra41+（DNF5）\nsudo dnf config-manager addrepo --from-repofile=https://nvidia.github.io/libnvidia-container/stable/rpm/libnvidia-container.repo\n",[39,369,370,376,381,397,401,406],{"__ignoreMap":20},[42,371,372],{"class":44,"line":45},[42,373,375],{"emptyLinePlaceholder":374},true,"\n",[42,377,378],{"class":44,"line":56},[42,379,380],{"class":59},"# 如果是RHEL或者Rocky（DNF4）\n",[42,382,383,385,388,391,394],{"class":44,"line":63},[42,384,257],{"class":48},[42,386,387],{"class":52}," dnf",[42,389,390],{"class":52}," config-manager",[42,392,393],{"class":152}," --add-repo",[42,395,396],{"class":52}," https://nvidia.github.io/libnvidia-container/stable/rpm/libnvidia-container.repo\n",[42,398,399],{"class":44,"line":212},[42,400,375],{"emptyLinePlaceholder":374},[42,402,403],{"class":44,"line":226},[42,404,405],{"class":59},"# 如果是Feodra41+（DNF5）\n",[42,407,408,410,412,414,417],{"class":44,"line":234},[42,409,257],{"class":48},[42,411,387],{"class":52},[42,413,390],{"class":52},[42,415,416],{"class":52}," addrepo",[42,418,419],{"class":152}," --from-repofile=https://nvidia.github.io/libnvidia-container/stable/rpm/libnvidia-container.repo\n",[23,421,422],{"start":63},[26,423,424],{},"Install the NVIDIA Container Toolkit packages:",[33,426,428],{"className":35,"code":427,"language":37,"meta":20,"style":20},"\n# 如果是RHEL或者Rocky\nsudo dnf install -y nvidia-container-toolkit\n\n# 如果是Fedora\nsudo dnf install -y nvidia-container-toolkit\n",[39,429,430,434,439,452,456,461],{"__ignoreMap":20},[42,431,432],{"class":44,"line":45},[42,433,375],{"emptyLinePlaceholder":374},[42,435,436],{"class":44,"line":56},[42,437,438],{"class":59},"# 如果是RHEL或者Rocky\n",[42,440,441,443,445,447,449],{"class":44,"line":63},[42,442,257],{"class":48},[42,444,387],{"class":52},[42,446,262],{"class":52},[42,448,265],{"class":152},[42,450,451],{"class":52}," nvidia-container-toolkit\n",[42,453,454],{"class":44,"line":212},[42,455,375],{"emptyLinePlaceholder":374},[42,457,458],{"class":44,"line":226},[42,459,460],{"class":59},"# 如果是Fedora\n",[42,462,463,465,467,469,471],{"class":44,"line":234},[42,464,257],{"class":48},[42,466,387],{"class":52},[42,468,262],{"class":52},[42,470,265],{"class":152},[42,472,451],{"class":52},[23,474,475],{"start":212},[26,476,477,479,480,483],{},[105,478,247],{},": Install on Fedora using ",[39,481,482],{},"dnf",".",[33,485,487],{"className":35,"code":486,"language":37,"meta":20,"style":20},"sudo dnf install -y nvidia-docker2\n",[39,488,489],{"__ignoreMap":20},[42,490,491,493,495,497,499],{"class":44,"line":45},[42,492,257],{"class":48},[42,494,387],{"class":52},[42,496,262],{"class":52},[42,498,265],{"class":152},[42,500,268],{"class":52},[23,502,503],{"start":226},[26,504,505,508],{},[105,506,507],{},"Configuring the container runtime using the nvidia-ctk command",": This command is used to configure the integration of the NVIDIA Container Toolkit with Docker. The command is as follows:",[33,510,511],{"className":35,"code":280,"language":37,"meta":20,"style":20},[39,512,513],{"__ignoreMap":20},[42,514,515,517,519,521,523],{"class":44,"line":45},[42,516,257],{"class":48},[42,518,289],{"class":52},[42,520,292],{"class":52},[42,522,295],{"class":52},[42,524,298],{"class":152},[23,526,527],{"start":234},[26,528,529,532],{},[105,530,531],{},"Restart Docker Service",": After completing the configuration, you must restart the Docker service for the changes to take effect:",[33,534,535],{"className":35,"code":306,"language":37,"meta":20,"style":20},[39,536,537],{"__ignoreMap":20},[42,538,539,541,543,545],{"class":44,"line":45},[42,540,257],{"class":48},[42,542,315],{"class":52},[42,544,318],{"class":52},[42,546,321],{"class":52},[15,548,549,550,553],{},"After executing these steps, Docker will use the NVIDIA Container Runtime and support GPU-accelerated container operation. You can use the ",[39,551,552],{},"nvidia-smi"," command to verify whether the NVIDIA GPU is available in the container.",[123,555,557],{"id":556},"testing-if-it-works","Testing if it works.",[23,559,560],{},[26,561,562,565],{},[105,563,564],{},"Run an NVIDIA CUDA container for testing",":",[15,567,568,569,572],{},"You can use the following command to test. Docker will automatically pull the ",[39,570,571],{},"nvidia/cuda:11.0.3-base-ubuntu20.04"," image and create a container that runs once and is then deleted.",[33,574,576],{"className":35,"code":575,"language":37,"meta":20,"style":20},"sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi\n",[39,577,578],{"__ignoreMap":20},[42,579,580,582,585,588,591,594,597,600],{"class":44,"line":45},[42,581,257],{"class":48},[42,583,584],{"class":52}," docker",[42,586,587],{"class":52}," run",[42,589,590],{"class":152}," --rm",[42,592,593],{"class":152}," --gpus",[42,595,596],{"class":52}," all",[42,598,599],{"class":52}," nvidia/cuda:11.0.3-base-ubuntu20.04",[42,601,602],{"class":52}," nvidia-smi\n",[15,604,605],{},[18,606],{"alt":20,"src":607},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image8.webp",[15,609,610],{},[18,611],{"alt":20,"src":612},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image9.webp",[10,614,616],{"id":615},"docker-configuration-for-cuda-and-cudnn","Docker configuration for CUDA and cuDNN",[15,618,619],{},"If you don't need to create your own Docker image and can directly use an image built by a senior student or someone else, you can skip this section. The CUDA and cuDNN inside the container are completely isolated from your local environment, so it doesn't matter whether you have CUDA installed locally. However, the NVIDIA driver version must meet the minimum requirements for the CUDA version being used.",[15,621,622],{},"Below is: If you want to create your own image, you can come back to this section after learning how to create a container image:",[15,624,625],{},[117,626,627],{"href":627,"rel":628},"https://hub.docker.com/r/nvidia/cuda",[121],[15,630,631],{},"In the website above, NVIDIA has already configured CUDA and CuDNN for us, so we don't need to set them up ourselves at all. This is far simpler than the traditional approach.",[15,633,634],{},"We just need to find the corresponding Docker image to use as the base package.",[15,636,637],{},"There are three types of CUDA images, as shown below. If we need to compile OpenCV4, we must use the devel version of CUDA.",[639,640,641,661],"table",{},[642,643,644],"thead",{},[645,646,647,652,655,658],"tr",{},[648,649,651],"th",{"align":650},"left","Mirror type",[648,653,654],{"align":650},"Applicable Scenarios",[648,656,657],{"align":650},"Example Tags",[648,659,660],{"align":650},"Size",[662,663,664,679,693],"tbody",{},[645,665,666,670,673,676],{},[667,668,669],"td",{"align":650},"base",[667,671,672],{"align":650},"Only the CUDA runtime library is needed.",[667,674,675],{"align":650},"12.4.0-base-ubuntu22.04",[667,677,678],{"align":650},"~240MB",[645,680,681,684,687,690],{},[667,682,683],{"align":650},"runtime",[667,685,686],{"align":650},"Deploy the compiled application (including the math library)",[667,688,689],{"align":650},"12.4.0-runtime-ubuntu22.04",[667,691,692],{"align":650},"~2GB",[645,694,695,698,701,704],{},[667,696,697],{"align":650},"devel",[667,699,700],{"align":650},"Development environment (including compilation tools)",[667,702,703],{"align":650},"12.4.0-devel-ubuntu22.04",[667,705,706],{"align":650},"~3GB",[15,708,709,710,713],{},"Let me give you an example: if I want to use CUDA 12.6 and CuDNN on Ubuntu 24.04, then I would choose ",[39,711,712],{},"nvidia/cuda:12.6.0-cudnn-devel-ubuntu24.04",". This image includes both CUDA-devel and CuDNN, and it's also based on Ubuntu 24.04.",[15,715,716],{},[18,717],{"alt":20,"src":718},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/10/03/image10.webp",[15,720,721],{},"In the Dockerfile, you can start by writing it like this at the beginning.",[33,723,727],{"className":724,"code":725,"language":726,"meta":20,"style":20},"language-dockerfile shiki shiki-themes github-light github-dark","\n# 基于NVIDIA官方CUDA 12.6和CuDNN基础镜像\nFROM nvidia/cuda:12.6.0-cudnn-devel-ubuntu24.04\n","dockerfile",[39,728,729,733,738],{"__ignoreMap":20},[42,730,731],{"class":44,"line":45},[42,732,375],{"emptyLinePlaceholder":374},[42,734,735],{"class":44,"line":56},[42,736,737],{"class":59},"# 基于NVIDIA官方CUDA 12.6和CuDNN基础镜像\n",[42,739,740,743],{"class":44,"line":63},[42,741,742],{"class":70},"FROM",[42,744,745],{"class":66}," nvidia/cuda:12.6.0-cudnn-devel-ubuntu24.04\n",[10,747,749],{"id":748},"configure-ethernet","Configure Ethernet",[33,751,753],{"className":35,"code":752,"language":37,"meta":20,"style":20},"--net=host \\\n",[39,754,755],{"__ignoreMap":20},[42,756,757,760,762,765],{"class":44,"line":45},[42,758,759],{"class":66},"--net",[42,761,71],{"class":70},[42,763,764],{"class":52},"host",[42,766,177],{"class":48},[15,768,769],{},"Just add this line to the startup parameters. See below for details.",[771,772,773],"style",{},"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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":20,"searchDepth":56,"depth":56,"links":775},[776,777,778,779],{"id":12,"depth":63,"text":13},{"id":99,"depth":63,"text":100},{"id":615,"depth":63,"text":616},{"id":748,"depth":63,"text":749},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","3",3000000,"2024-10-03","wiki/2024-10-03-docker-jiao-cheng","en-us:2024-10-03-docker-jiao-cheng","/en-us/wiki/2024-10-03-docker-jiao-cheng","Docker教程","md","wiki/2024-10-03-Docker教程/ch3-Docker直通",false,null,"en-US","en-us",{},{"title":5,"description":20},"/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","_i18n/en-us/wiki/2024-10-03-Docker教程/ch3-Docker直通","10SJKN3l5GkuKyDct9XrahtOOOa6UL6FhDmx8HqNaZI",[800,806,812,818,824,825,831,837,843,849,855,861],{"path":801,"stem":802,"title":803,"date":783,"chapter":804,"chapterSort":805,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch1-jian-jie","_i18n/en-us/wiki/2024-10-03-Docker教程/ch1-简介","Introduction","1",1000000,{"path":807,"stem":808,"title":809,"date":783,"chapter":810,"chapterSort":811,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch10-1-kuai-su-da-kai-zhong-duan","_i18n/en-us/wiki/2024-10-03-Docker教程/ch10-1-快速打开终端","Quickly Open a Terminal in Docker","10.1",10010000,{"path":813,"stem":814,"title":815,"date":783,"chapter":816,"chapterSort":817,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch10-docker-shi-yong-you-hua","_i18n/en-us/wiki/2024-10-03-Docker教程/ch10-Docker使用优化","Docker Usage Optimization","10",10000000,{"path":819,"stem":820,"title":821,"date":783,"chapter":822,"chapterSort":823,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch2-an-zhuang-docker","_i18n/en-us/wiki/2024-10-03-Docker教程/ch2-安装Docker","Install Docker","2",2000000,{"path":780,"stem":797,"title":5,"date":783,"chapter":781,"chapterSort":782,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},{"path":826,"stem":827,"title":828,"date":783,"chapter":829,"chapterSort":830,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch4-dockerhub-huan-yuan","_i18n/en-us/wiki/2024-10-03-Docker教程/ch4-DockerHub换源","DockerHub change source","4",4000000,{"path":832,"stem":833,"title":834,"date":783,"chapter":835,"chapterSort":836,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/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/en-us/wiki/2024-10-03-Docker教程/ch5-docker容器里的程序的图形界面弹不出来","The graphical interface of the program inside the Docker container cannot be displayed.","5",5000000,{"path":838,"stem":839,"title":840,"date":783,"chapter":841,"chapterSort":842,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch6-docker-ming-ling-xue-xi","_i18n/en-us/wiki/2024-10-03-Docker教程/ch6-Docker命令学习","Learning Docker Commands","6",6000000,{"path":844,"stem":845,"title":846,"date":783,"chapter":847,"chapterSort":848,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch7-ge-zhong-docker-rong-qi-bu-shu","_i18n/en-us/wiki/2024-10-03-Docker教程/ch7-各种Docker容器部署","Deploying various Docker containers","7",7000000,{"path":850,"stem":851,"title":852,"date":783,"chapter":853,"chapterSort":854,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch8-shou-dong-chuang-jian-docker-jing-xiang","_i18n/en-us/wiki/2024-10-03-Docker教程/ch8-手动创建Docker镜像","Manually create a Docker image","8",8000000,{"path":856,"stem":857,"title":858,"date":783,"chapter":859,"chapterSort":860,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":790},"/en-us/wiki/2024-10-03-docker-jiao-cheng/ch9-vscode-yuan-cheng-kai-fa","_i18n/en-us/wiki/2024-10-03-Docker教程/ch9-VScode远程开发","VScode remote development","9",9000000,{"path":786,"stem":862,"title":863,"date":783,"chapter":791,"chapterSort":864,"docKey":785,"docRoot":786,"docTitle":787,"isWikiDoc":374,"isWikiIndex":374},"_i18n/en-us/wiki/2024-10-03-Docker教程/index","Docker tutorial",0,{"variants":866},[867,868,871,874,877],{"path":780,"localeSlug":793,"i18nKey":789},{"path":869,"localeSlug":870,"i18nKey":789},"/zh-hant/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","zh-hant",{"path":872,"localeSlug":873,"i18nKey":789},"/zh-hk/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","zh-hk",{"path":875,"localeSlug":876,"i18nKey":789},"/zh-tw/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","zh-tw",{"path":878,"localeSlug":879,"i18nKey":789},"/zh-cn/wiki/2024-10-03-docker-jiao-cheng/ch3-docker-zhi-tong","zh-cn",[780,796,869,796,872,796,875,796,878,796],1780671794278]