使用Docker將容器目錄掛載到主機(jī)上的實現(xiàn)方法
一、基本介紹
這里我們主要介紹 Docker 里的一個命令,叫做 --mount,其本質(zhì)上來說和 --volume 命令并沒有太大區(qū)別,因為這兩個命令都是用來給容器提供一個掛載目錄。唯一的區(qū)別便是,容器的掛載類型不同,那么效果也會有所不同。
容器的掛載類型:
bind:將宿主機(jī)的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內(nèi)容也會隨著消失)volume:在宿主機(jī)的 Docker 存儲目錄下創(chuàng)建一個目錄,并掛載到容器的指定目錄(并不會覆蓋容器指定目錄下的內(nèi)容)
在有些時候,由于容器內(nèi)的目錄有著特殊作用,并不能以覆蓋的形式進(jìn)行掛載。但又想掛載到宿主機(jī)上,這時我們便可以使用 volume 類型的掛載方式。像我們上面所說的 --mount 和 --volume 命令都是支持以這兩種類型的方式掛載,無非就是配置稍有不同。
兩種命令使用 bind 類型掛載區(qū)別:當(dāng)宿主機(jī)上指定的目錄不存在時,我們使用 --volume 命令掛載時,便會自動的在宿主機(jī)上創(chuàng)建出相應(yīng)目錄,而我們要是使用 --mount 命令來掛載,便會輸出 `` 報錯信息。
二、將容器目錄掛載到主機(jī)
1)使用 --volume 命令實現(xiàn) bind 類型的掛載
[root@k8s-master01 ~]# docker run -d -it --name zhangsan \ -v /zhangsan:/usr/share/nginx/html \ nginx:1.21.0 [root@k8s-master01 ~]# echo "Hello World" > /zhangsan/index.html [root@k8s-master01 ~]# docker exec -it zhangsan /bin/bash root@3cad299c93aa:/# cd /usr/share/nginx/html/ root@3cad299c93aa:/usr/share/nginx/html# ls index.html root@3cad299c93aa:/usr/share/nginx/html# curl 127.0.0.1

可以看到,當(dāng)我們使用 bind 類型的掛載時,容器內(nèi)指定的目錄原有內(nèi)容會被覆蓋。
2)使用 --mount 命令實現(xiàn) bind 類型的掛載
[root@k8s-master01 ~]# docker run -d -it --name wangwu \ --mount type=bind,source=/zhangsan,destination=/usr/share/nginx/html \ nginx:1.21.0 [root@k8s-master01 ~]# docker exec -it wangwu /bin/bash root@474cf5ddd29f:/# cd /usr/share/nginx/html/ root@474cf5ddd29f:/usr/share/nginx/html# ls index.html root@474cf5ddd29f:/usr/share/nginx/html# curl 127.0.0.1

我們上面指定 type=bind 類型的原因是因為 --mount 命令默認(rèn)掛載的類型就是 volume 類型,所以需要指定。
--mount 命令掛載格式:
bind掛載類型:--mount [type=bind] source=/path/on/host,destination=/path/in/container[,...]volume掛載類型:--mount source=my-volume,destination=/path/in/container[,...]
3)使用 --volume 命令實現(xiàn) volume 類型的掛載
[root@k8s-master01 ~]# docker run -d -it --name volume \ -v zhangsan:/usr/share/nginx/html \ nginx:1.21.0 [root@k8s-master01 ~]# docker exec -it volume /bin/bash root@dced26ccb8f0:/# cd /usr/share/nginx/html/ root@dced26ccb8f0:/usr/share/nginx/html# ls 50x.html index.html

4)使用 --mount 命令實現(xiàn) volume 類型的掛載
[root@k8s-master01 ~]# docker run -d -it --name mount \ --mount source=mount,destination=/usr/share/nginx/html \ nginx:1.21.0 [root@k8s-master01 ~]# docker exec -it mount /bin/bash root@7e63ca69f135:/# cd /usr/share/nginx/html/ root@7e63ca69f135:/usr/share/nginx/html# ls 50x.html index.html

查看宿主機(jī)的掛載目錄

其實,使用 bind 或是 mount 類型的掛載方式,區(qū)別主要就是在于有 / 和沒 /,有 / 就會掛載到宿主機(jī)的指定目錄,沒有 / 則是會掛載到宿主機(jī) Docker 所在的目錄中。
到此這篇關(guān)于使用Docker將容器目錄掛載到主機(jī)上的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker將容器目錄掛載到主機(jī)上內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker下安裝部署Clickhouse及其遠(yuǎn)程訪問方式
文章介紹了如何遠(yuǎn)程拉取和安裝ClickHouse Docker鏡像,配置和部署ClickHouse容器,并通過DataGrip遠(yuǎn)程訪問ClickHouse2024-11-11
docker安裝rockerChat設(shè)置聊天室的詳細(xì)步驟
這篇文章主要介紹了docker安裝rockerChat設(shè)置聊天室的方法,通過設(shè)置文件獲取docker-compose文件,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-05-05
詳解如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理
有時因為網(wǎng)絡(luò)原因,比如公司 NAT,或其它啥的,需要使用代理,這篇文章主要為大家詳細(xì)介紹了如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
Docker中Harbor企業(yè)級鏡像倉庫的搭建與使用
本文介紹了Harbor企業(yè)級鏡像倉庫的搭建與使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
解決docker?pull出現(xiàn)錯誤:Error?response?from?daemon
這篇文章主要給大家介紹了關(guān)于解決docker?pull出現(xiàn)錯誤:Error?response?from?daemon的相關(guān)資料,這個錯誤提示一般是因為你沒有權(quán)限拉取對應(yīng)的鏡像,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
如何使用Docker部署Go Web應(yīng)用的實現(xiàn)
這篇文章主要介紹了如何使用Docker部署Go Web應(yīng)用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
centos7安裝/升級docker和docker compose方式
文章總結(jié)了在升級Docker和安裝Docker Compose時遇到的問題,包括舊版安裝和新版安裝的差異、docker-compose的安裝問題以及卸載前的注意事項2024-12-12
Docker容器處于Removal in process無法刪除問題及解決
這篇文章主要介紹了Docker容器處于Removal in process無法刪除問題及解決方案,具有很好的參考價值,希望對大家有所幫助。2023-07-07

