您好,登錄后才能下訂單哦!
今天小編給大家分享一下如何使用Docker將容器目錄掛載到主機(jī)上的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
這里我們主要介紹 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ò)信息。
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 所在的目錄中。
以上就是“如何使用Docker將容器目錄掛載到主機(jī)上”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。