使用Docker將容器目錄掛載到主機(jī)上的實(shí)現(xiàn)方法
一、基本介紹
這里我們主要介紹 Docker 里的一個(gè)命令,叫做 --mount,其本質(zhì)上來(lái)說(shuō)和 --volume 命令并沒(méi)有太大區(qū)別,因?yàn)檫@兩個(gè)命令都是用來(lái)給容器提供一個(gè)掛載目錄。唯一的區(qū)別便是,容器的掛載類(lèi)型不同,那么效果也會(huì)有所不同。
容器的掛載類(lèi)型:
bind:將宿主機(jī)的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內(nèi)容也會(huì)隨著消失)volume:在宿主機(jī)的 Docker 存儲(chǔ)目錄下創(chuàng)建一個(gè)目錄,并掛載到容器的指定目錄(并不會(huì)覆蓋容器指定目錄下的內(nèi)容)
在有些時(shí)候,由于容器內(nèi)的目錄有著特殊作用,并不能以覆蓋的形式進(jìn)行掛載。但又想掛載到宿主機(jī)上,這時(shí)我們便可以使用 volume 類(lèi)型的掛載方式。像我們上面所說(shuō)的 --mount 和 --volume 命令都是支持以這兩種類(lèi)型的方式掛載,無(wú)非就是配置稍有不同。
兩種命令使用 bind 類(lèi)型掛載區(qū)別:當(dāng)宿主機(jī)上指定的目錄不存在時(shí),我們使用 --volume 命令掛載時(shí),便會(huì)自動(dòng)的在宿主機(jī)上創(chuàng)建出相應(yīng)目錄,而我們要是使用 --mount 命令來(lái)掛載,便會(huì)輸出 `` 報(bào)錯(cuò)信息。
二、將容器目錄掛載到主機(jī)
1)使用 --volume 命令實(shí)現(xiàn) bind 類(lèi)型的掛載
[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 類(lèi)型的掛載時(shí),容器內(nèi)指定的目錄原有內(nèi)容會(huì)被覆蓋。
2)使用 --mount 命令實(shí)現(xiàn) bind 類(lèi)型的掛載
[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 類(lèi)型的原因是因?yàn)?--mount 命令默認(rèn)掛載的類(lèi)型就是 volume 類(lèi)型,所以需要指定。
--mount 命令掛載格式:
bind掛載類(lèi)型:--mount [type=bind] source=/path/on/host,destination=/path/in/container[,...]volume掛載類(lèi)型:--mount source=my-volume,destination=/path/in/container[,...]
3)使用 --volume 命令實(shí)現(xiàn) volume 類(lèi)型的掛載
[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 命令實(shí)現(xiàn) volume 類(lèi)型的掛載
[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ī)的掛載目錄

其實(shí),使用 bind 或是 mount 類(lèi)型的掛載方式,區(qū)別主要就是在于有 / 和沒(méi) /,有 / 就會(huì)掛載到宿主機(jī)的指定目錄,沒(méi)有 / 則是會(huì)掛載到宿主機(jī) Docker 所在的目錄中。
到此這篇關(guān)于使用Docker將容器目錄掛載到主機(jī)上的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker將容器目錄掛載到主機(jī)上內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker網(wǎng)絡(luò),docker-compose?network問(wèn)題
這篇文章主要介紹了docker網(wǎng)絡(luò),docker-compose?network問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
遷移變更Docker默認(rèn)數(shù)據(jù)存儲(chǔ)目錄的步驟詳解
Docker安裝的默認(rèn)數(shù)據(jù)目錄為/var/lib/docker,但是如果/目錄掛載的磁盤(pán)空間不夠,就需要遷移docker數(shù)據(jù)到其他目錄,接下來(lái)本就給大家介紹遷移變更Docker默認(rèn)數(shù)據(jù)存儲(chǔ)目錄的操作步驟,需要的朋友可以參考下2023-12-12
生產(chǎn)環(huán)境中安全運(yùn)行Docker容器
本文是一篇譯文,給大家詳細(xì)介紹如何在生產(chǎn)環(huán)境中安全運(yùn)行Docker容器,有需要的小伙伴可以參考下2017-01-01
docker容器源碼部署httpd用存儲(chǔ)卷部署網(wǎng)站(推薦)
這篇文章主要介紹了docker容器源碼部署httpd用存儲(chǔ)卷部署網(wǎng)站,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
Docker磁盤(pán)空間清理的方法實(shí)現(xiàn)
在使用Docker的過(guò)程中,系統(tǒng)會(huì)逐漸積累一些無(wú)用的垃圾文件,占據(jù)寶貴的磁盤(pán)空間并影響系統(tǒng)性,本文主要介紹了Docker磁盤(pán)空間清理的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Docker?創(chuàng)建centos容器集群并實(shí)現(xiàn)遠(yuǎn)程登錄功能
這篇文章主要介紹了Docker?創(chuàng)建centos容器集群并實(shí)現(xiàn)遠(yuǎn)程登錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
Docker移除鏡像幾種不同的方法實(shí)戰(zhàn)記錄
在Docker實(shí)戰(zhàn)中,合理刪除不再需要的鏡像,有助于釋放寶貴的磁盤(pán)空間,刪除Docker鏡像可以通過(guò)多種方式,包括刪除單個(gè)鏡像、強(qiáng)制刪除正在使用的鏡像、刪除未被任何容器引用的所有鏡像以及刪除所有鏡像等,需要的朋友可以參考下2024-11-11

