網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
docker 容器數(shù)據(jù)卷volume
如果數(shù)據(jù)都在容器中,那么我們刪除容器的時(shí)候數(shù)據(jù)就會(huì)丟失,所以我們希望數(shù)據(jù)可以持久化。
例如MySQL容器,我們希望數(shù)據(jù)可以存儲(chǔ)在本地,當(dāng)MySQL容器刪除的時(shí)候,數(shù)據(jù)不會(huì)丟失。
容器之間可以有一個(gè)數(shù)據(jù)共享的技術(shù),Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地,這就是卷技術(shù)。也就是數(shù)據(jù)掛載技術(shù),將我們?nèi)萜鲀?nèi)的目錄,掛載到Linux上面。
掛載之后,我們?cè)谌萜鲀?nèi)做的操作回同步到Linux宿主機(jī)上。
使用數(shù)據(jù)卷
方式一:直接使用命令掛載 -v
docker run -it -v 主機(jī)目錄:容器目錄 #測(cè)試 [root@sumarua home]# docker run -it -v /home/ceshi:/home centos /bin/bash # 啟動(dòng)起來(lái)之后我們可以通過(guò)docker inspect容器id]來(lái)查看
示例
MySQL的數(shù)據(jù)持久化
[root@sumarua home]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=666666 --name mysql mysql5.7
具名掛載和匿名掛載
#匿名掛載 -v 容器內(nèi)路徑 docker run -d -p --name nginx01 -v /etc/nginx nginx #查看所有的volume的情況 docker volume ls
# 具名掛載 # 通過(guò) -v 卷名:容器內(nèi)路徑 docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx #查看 docker volume ls
我們可以查看一下卷的掛載的具體位置
docker volume inspect [卷名]
所有的docker 容器內(nèi)的卷,沒(méi)有指定目錄的情況下都在/var/lib/docker/volumes/xxxx/_data
通過(guò)具名掛載我們可以方便找到卷。
如何確定是具名掛載還是匿名掛載,還是指定路徑掛載
-v 容器內(nèi)路徑 #匿名掛載 -v 卷名:容器內(nèi)路徑 #具名掛載 -v /宿主機(jī)路徑:容器內(nèi)路徑 #指定路徑掛載
拓展:
# 通過(guò) -v 容器內(nèi)路徑:ro rw 改變讀寫權(quán)限 ro readonly #只讀 rw readwrite #可讀可寫 #默認(rèn)可讀可寫 #一旦設(shè)置了容器權(quán)限,容器對(duì)我們掛載出來(lái)的內(nèi)容就有限定了 #ro 這個(gè)路徑只能通過(guò)宿主機(jī)來(lái)操作,容器內(nèi)部是無(wú)法操作的。
方式二:Dockerfile
Dockerfile 就是用來(lái)構(gòu)建docker鏡像的構(gòu)建文件,命令腳本。
通過(guò)這個(gè)腳本可以生成鏡像,鏡像是一層一層的,腳本是一個(gè)一個(gè)的命令,每個(gè)命令都是一層。
# 創(chuàng)建一個(gè)dockerfile文件,名字可以隨機(jī),建議Dockerfile # 文件中的內(nèi)容 指令(大寫)參數(shù) FROM centos VOLUME ["volume01","volume02"] CMD echo "----end----" CMD /bin/bash # 這里的每個(gè)命令,就是鏡像的一層
數(shù)據(jù)卷容器
--volumes-from
# 用法 [root@sumarua]#docker run -it --name docker02 --volumes-from docker01 sumarua/centos
實(shí)現(xiàn)數(shù)據(jù)同步,容器間數(shù)據(jù)共享
數(shù)據(jù)卷容器刪除文件后不會(huì)影響掛載在此容器上的其他容器的數(shù)據(jù)訪問(wèn)。是一種拷貝的概念,備份拷貝機(jī)制。
容器之間配置信息的傳遞,數(shù)據(jù)卷容器的生命周期持續(xù)到?jīng)]有容器使用為止。
但是一旦持久化到本地,本地的數(shù)據(jù)是不會(huì)刪除的。
總結(jié)
原文鏈接:https://blog.csdn.net/weixin_43510203/article/details/122210744
相關(guān)推薦
- 2022-07-29 Linux文件系統(tǒng)介紹_linux shell
- 2023-07-05 go gorm想要查詢數(shù)據(jù)按照where in中的數(shù)據(jù)進(jìn)行排序
- 2022-05-24 python使用torch隨機(jī)初始化參數(shù)_python
- 2022-06-25 EF?Core的CRUD(增刪改查)基本操作_實(shí)用技巧
- 2022-05-25 SpringBoot使用Aop實(shí)現(xiàn)分布式鎖
- 2022-07-11 docker之docker-compose
- 2022-04-19 C++中拷貝構(gòu)造函數(shù)的使用_C 語(yǔ)言
- 2022-07-13 Golang實(shí)現(xiàn)常見(jiàn)排序算法的示例代碼_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤: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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支