使用Docker將容器目錄掛載到主機上的實現(xiàn)方法
一、基本介紹
這里我們主要介紹 Docker 里的一個命令,叫做 --mount,其本質(zhì)上來說和 --volume 命令并沒有太大區(qū)別,因為這兩個命令都是用來給容器提供一個掛載目錄。唯一的區(qū)別便是,容器的掛載類型不同,那么效果也會有所不同。
容器的掛載類型:
bind:將宿主機的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內(nèi)容也會隨著消失)volume:在宿主機的 Docker 存儲目錄下創(chuàng)建一個目錄,并掛載到容器的指定目錄(并不會覆蓋容器指定目錄下的內(nèi)容)
在有些時候,由于容器內(nèi)的目錄有著特殊作用,并不能以覆蓋的形式進行掛載。但又想掛載到宿主機上,這時我們便可以使用 volume 類型的掛載方式。像我們上面所說的 --mount 和 --volume 命令都是支持以這兩種類型的方式掛載,無非就是配置稍有不同。
兩種命令使用 bind 類型掛載區(qū)別:當宿主機上指定的目錄不存在時,我們使用 --volume 命令掛載時,便會自動的在宿主機上創(chuàng)建出相應(yīng)目錄,而我們要是使用 --mount 命令來掛載,便會輸出 `` 報錯信息。
二、將容器目錄掛載到主機
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

可以看到,當我們使用 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 命令默認掛載的類型就是 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

查看宿主機的掛載目錄

其實,使用 bind 或是 mount 類型的掛載方式,區(qū)別主要就是在于有 / 和沒 /,有 / 就會掛載到宿主機的指定目錄,沒有 / 則是會掛載到宿主機 Docker 所在的目錄中。
到此這篇關(guān)于使用Docker將容器目錄掛載到主機上的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker將容器目錄掛載到主機上內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker網(wǎng)絡(luò),docker-compose?network問題
這篇文章主要介紹了docker網(wǎng)絡(luò),docker-compose?network問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
遷移變更Docker默認數(shù)據(jù)存儲目錄的步驟詳解
Docker安裝的默認數(shù)據(jù)目錄為/var/lib/docker,但是如果/目錄掛載的磁盤空間不夠,就需要遷移docker數(shù)據(jù)到其他目錄,接下來本就給大家介紹遷移變更Docker默認數(shù)據(jù)存儲目錄的操作步驟,需要的朋友可以參考下2023-12-12
docker容器源碼部署httpd用存儲卷部署網(wǎng)站(推薦)
這篇文章主要介紹了docker容器源碼部署httpd用存儲卷部署網(wǎng)站,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
Docker?創(chuàng)建centos容器集群并實現(xiàn)遠程登錄功能
這篇文章主要介紹了Docker?創(chuàng)建centos容器集群并實現(xiàn)遠程登錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03

