網站首頁 編程語言 正文
一、基本介紹
這里我們主要介紹 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 所在的目錄中。
原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/124872109
相關推薦
- 2022-06-12 教你十行代碼實現python向手機推送通知功能_python
- 2022-05-27 redis分布式Jedis類型轉換的異常深入研究_Redis
- 2022-08-12 C++鏈表實現通訊錄設計_C 語言
- 2023-10-09 instanceof` 的基本工作原理
- 2022-09-06 python實現plt?x軸坐標按1刻度顯示_python
- 2022-06-13 基于Docker與Jenkins實現自動化部署的原理解析_docker
- 2022-04-01 HIVE str_to_map將字符串轉為map格式
- 2023-05-07 GO中什么情況會使用變量逃逸_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支