您好,登錄后才能下訂單哦!
今天小編給大家分享一下如何使用Docker將容器目錄掛載到主機上的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
這里我們主要介紹 Docker 里的一個命令,叫做 --mount
,其本質上來說和 --volume
命令并沒有太大區別,因為這兩個命令都是用來給容器提供一個掛載目錄。唯一的區別便是,容器的掛載類型不同,那么效果也會有所不同。
容器的掛載類型:
bind
:將宿主機的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內容也會隨著消失)
volume
:在宿主機的 Docker 存儲目錄下創建一個目錄,并掛載到容器的指定目錄(并不會覆蓋容器指定目錄下的內容)
在有些時候,由于容器內的目錄有著特殊作用,并不能以覆蓋的形式進行掛載。但又想掛載到宿主機上,這時我們便可以使用 volume
類型的掛載方式。像我們上面所說的 --mount
和 --volume
命令都是支持以這兩種類型的方式掛載,無非就是配置稍有不同。
兩種命令使用 bind
類型掛載區別:當宿主機上指定的目錄不存在時,我們使用 --volume
命令掛載時,便會自動的在宿主機上創建出相應目錄,而我們要是使用 --mount
命令來掛載,便會輸出 `` 報錯信息。
1)使用 --volume
命令實現 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
類型的掛載時,容器內指定的目錄原有內容會被覆蓋。
2)使用 --mount
命令實現 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
命令實現 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
命令實現 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
類型的掛載方式,區別主要就是在于有 /
和沒 /
,有 /
就會掛載到宿主機的指定目錄,沒有 /
則是會掛載到宿主機 Docker 所在的目錄中。
以上就是“如何使用Docker將容器目錄掛載到主機上”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。