使用Docker將容器目錄掛載到主機(jī)上的實(shí)現(xiàn)方法
一、基本介紹
這里我們主要介紹 Docker 里的一個(gè)命令,叫做 --mount
,其本質(zhì)上來(lái)說(shuō)和 --volume
命令并沒(méi)有太大區(qū)別,因?yàn)檫@兩個(gè)命令都是用來(lái)給容器提供一個(gè)掛載目錄。唯一的區(qū)別便是,容器的掛載類型不同,那么效果也會(huì)有所不同。
容器的掛載類型:
bind
:將宿主機(jī)的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內(nèi)容也會(huì)隨著消失)volume
:在宿主機(jī)的 Docker 存儲(chǔ)目錄下創(chuàng)建一個(gè)目錄,并掛載到容器的指定目錄(并不會(huì)覆蓋容器指定目錄下的內(nèi)容)
在有些時(shí)候,由于容器內(nèi)的目錄有著特殊作用,并不能以覆蓋的形式進(jìn)行掛載。但又想掛載到宿主機(jī)上,這時(shí)我們便可以使用 volume
類型的掛載方式。像我們上面所說(shuō)的 --mount
和 --volume
命令都是支持以這兩種類型的方式掛載,無(wú)非就是配置稍有不同。
兩種命令使用 bind
類型掛載區(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
類型的掛載
[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
類型的掛載時(shí),容器內(nèi)指定的目錄原有內(nèi)容會(huì)被覆蓋。
2)使用 --mount
命令實(shí)現(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
類型的原因是因?yàn)?--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
命令實(shí)現(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
命令實(shí)現(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ī)的掛載目錄
其實(shí),使用 bind
或是 mount
類型的掛載方式,區(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下安裝部署Clickhouse及其遠(yuǎn)程訪問(wèn)方式
文章介紹了如何遠(yuǎn)程拉取和安裝ClickHouse Docker鏡像,配置和部署ClickHouse容器,并通過(guò)DataGrip遠(yuǎn)程訪問(wèn)ClickHouse2024-11-11docker安裝rockerChat設(shè)置聊天室的詳細(xì)步驟
這篇文章主要介紹了docker安裝rockerChat設(shè)置聊天室的方法,通過(guò)設(shè)置文件獲取docker-compose文件,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-05-05Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐
本文主要介紹了Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06詳解如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理
有時(shí)因?yàn)榫W(wǎng)絡(luò)原因,比如公司 NAT,或其它啥的,需要使用代理,這篇文章主要為大家詳細(xì)介紹了如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01Docker中Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用
本文介紹了Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12解決docker?pull出現(xiàn)錯(cuò)誤:Error?response?from?daemon
這篇文章主要給大家介紹了關(guān)于解決docker?pull出現(xiàn)錯(cuò)誤:Error?response?from?daemon的相關(guān)資料,這個(gè)錯(cuò)誤提示一般是因?yàn)槟銢](méi)有權(quán)限拉取對(duì)應(yīng)的鏡像,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12如何使用Docker部署Go Web應(yīng)用的實(shí)現(xiàn)
這篇文章主要介紹了如何使用Docker部署Go Web應(yīng)用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11centos7安裝/升級(jí)docker和docker compose方式
文章總結(jié)了在升級(jí)Docker和安裝Docker Compose時(shí)遇到的問(wèn)題,包括舊版安裝和新版安裝的差異、docker-compose的安裝問(wèn)題以及卸載前的注意事項(xiàng)2024-12-12Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決
這篇文章主要介紹了Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07