網(wǎng)站首頁 編程語言 正文
什么是容器數(shù)據(jù)卷
從docker的理念說起,docker將應(yīng)用和環(huán)境打包成一個鏡像,運(yùn)行鏡像(生成容器)就可以訪問服務(wù)了。
如果數(shù)據(jù)都存在容器中,那么刪除容器,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久化 MySQL容器刪了,就相當(dāng)于刪庫了。需求:MySQL數(shù)據(jù)可以本地存儲
容器之間可以有一個數(shù)據(jù)共享的技術(shù),docker容器產(chǎn)生的數(shù)據(jù)同步到本地或者別的地方。
這就是數(shù)據(jù)卷技術(shù),就是目錄掛載,將容器內(nèi)的目錄,掛載到虛擬機(jī)上或者Linux上
目的:實(shí)現(xiàn)容器數(shù)據(jù)的持久化和同步操作。容器間也可以數(shù)據(jù)共享
數(shù)據(jù)的覆蓋問題
如果掛載一個空的數(shù)據(jù)卷
到容器中的一個非空目錄
中,那么這個目錄下的文件會被復(fù)制到數(shù)據(jù)卷中。
如果掛載一個非空的數(shù)據(jù)卷
到容器中的一個目錄中,那么容器中的目錄中會顯示數(shù)據(jù)卷中的數(shù)據(jù)。如果原來容器中的目錄中有數(shù)據(jù),那么這些原始數(shù)據(jù)會被隱藏掉。
這兩個規(guī)則都非常重要,靈活利用第一個規(guī)則可以幫助我們初始化數(shù)據(jù)卷
中的內(nèi)容。掌握第二個規(guī)則可以保證掛載數(shù)據(jù)卷后的數(shù)據(jù)總是你期望的結(jié)果。
使用數(shù)據(jù)卷
方式一:直接使用命令掛載 -v
docker run -it -v 主機(jī)目錄:容器內(nèi)目錄 docker run -it -v /home/test:/home centos /bin/bash
docker inspect
命令查看容器信息
測試掛載卷
1、在容器內(nèi)部修改文件同步到Linux主機(jī)上
進(jìn)入容器,在/home
目錄下創(chuàng)建123.sh
文件
主機(jī)內(nèi)可以查看在容器內(nèi)部創(chuàng)建的文件
2、同樣地,在Linux上修改掛在卷文件可以同步到容器內(nèi)部
3、停止容器,修改Linux主機(jī)上的文件,同步到容器內(nèi)
# 1、停止容器 exit # 2、查看容器是否還在運(yùn)行 docker ps # 3、在Linux主機(jī)上修改對應(yīng)目錄的文件 # 4、啟動容器并查看 # 4.1、 查看歷史運(yùn)行的容器 docker ps -a # 4.2、 啟動容器 docker start CONTAINER ID # 4.3、 進(jìn)去容器 docker attach CONTAINER ID # 4.4、 查看數(shù)據(jù)卷文件
方式二:Dockerfile文件
請查看下一章節(jié)
數(shù)據(jù)卷命令
docker volume docker volume --help Usage: docker volume COMMAND Manage volumes Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes Run 'docker volume COMMAND --help' for more information on a command.
具名掛載/匿名掛載 匿名掛載
-v 容器內(nèi)路徑 -P 自動分配端口號 docker run -d -P --name nginx02 -v /etc/nginx nginx
具名掛載
-v 卷名:容器內(nèi)路徑 docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx
查看數(shù)據(jù)卷
方式一:docker inspect 容器ID
方式二:docker volume inspect juming-nginx
查看Linux主機(jī)docker工作目錄 /var/lib/docker
所有docker容器內(nèi)的卷,沒有指定目錄的情況下都是存放在 /var/lib/docker/volumes/xxx/_data
目錄下
掛載三種方式
# 1 -v 容器內(nèi)路徑 # 匿名掛載 # 2 -v 卷名:容器內(nèi)路徑 # 具名掛載 # 3 -v 宿主機(jī)路徑:容器內(nèi)路徑 # 指定路徑掛載
擴(kuò)展
給掛載的數(shù)據(jù)卷增加讀寫權(quán)限控制
通過 -v
容器內(nèi)路徑, ro
rw
改變讀寫權(quán)限
ro readonly 只讀
rw readwrite 可讀寫
# 一旦設(shè)置了容器權(quán)限,容器對我們掛載出來的內(nèi)容就有限定了 docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx
ro
: 說明這個路徑只能通過宿主機(jī)來操作,容器內(nèi)無法操作
原文鏈接:https://www.cnblogs.com/all-smile/p/16774608.html
相關(guān)推薦
- 2022-10-14 SpringCloud組件之Feign遠(yuǎn)程調(diào)用
- 2023-03-17 使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請求_python
- 2024-03-05 git創(chuàng)建分支
- 2022-08-31 Postgresql數(shù)據(jù)庫character?varying和character的區(qū)別說明_Post
- 2023-03-01 Python中的getter與setter及deleter使用示例講解_python
- 2022-08-14 win?sever?2022如何占用操作主機(jī)角色_win服務(wù)器
- 2022-04-07 React中代碼分割的4種實(shí)現(xiàn)方式_React
- 2022-05-14 c++和python實(shí)現(xiàn)順序查找實(shí)例_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支