docker資料卷(Data Volumes)
Docker宿主機和容器之間檔案拷貝
前言:
Docker 資料管理
在生產環境中使用 Docker ,往往需要對資料進行持久化,或者需要在多個容器之間進行
資料共享,這必然涉及容器的資料管理操作
容器中的管理資料主要有兩種方式:
資料卷 Data Volumes 容器內資料直接對映到本地主機環境;
資料卷容器(Data Volume Containers 使用特定容器維護資料卷
當然還有最原始的copy方式,這個也是管理資料的方式,但是基本不會用到
最原始的copy方式管理資料:
宿主機檔案 copy to 容器內
docker cp 需要拷貝的檔案或者目錄 容器名稱:容器目錄
容器內 copy to 宿主機
docker cp 容器名稱:容器目錄 宿主機目錄
資料卷
資料卷(Data Volumes)
資料卷是一個可供一個或多個容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器,
它可以提供很多有用的特性:
1.資料卷 可以在容器之間共享和重用
2.對資料卷的修改會立馬生效
3.對資料卷的更新,不會影響映象
4.資料卷 預設會一直存在,即使容器被刪除
資料卷相關操作
1.建立資料卷
docker volume create my-vol
此時,資料卷預設會放到/var/lib/docker/volumes路徑下,會發現所新建的資料卷位置,檢視命令如下:
## 引數可以為數字“1”,字母L:大小寫均可,但效果不一樣
ls -1 /var/lib/docker/volumes
2.檢視所有的資料卷
docker volume ls
3.檢視指定資料卷的詳細資訊(顯示一個JSON格式的資料)
docker volume inspect my-vol
4.刪除一個volume
docker volume rm my-vol
注:資料卷 是被設計用來持久化資料的,它的生命週期獨立於容器,Docker不會在容器被刪除後自動刪除資料卷,
並且也不存在垃圾回收這樣的機制來處理沒有任何容器引用的資料卷,無主的資料卷可能會佔據很多空間,
所以要及時刪除
掛載資料卷,最好是通過run而非create/start建立啟動容器
create/start命令建立啟動容器後,再掛載資料卷相當麻煩,要修改很多配置檔案,但並非不可以
5.啟動一個掛載資料卷的容器
## demo1
docker run -d \
-it \
--name mycentos02\
--mount source=my-vol,target=/webapp3 \
centos:7
注意:此行命令執行後的效果是,宿主機路徑/var/lib/docker/volumes/my-vol/_data與tomcat01容器路徑/webapp完成對映
docker run -d \
-it \
--name mycentos04\
--mount type=bind,source=/root/javalxy/data,target=/root/webapp12 \
centos:7
注1:linux命令結尾加斜槓有什麼用
加了“\”意為將最後的回車換行給註釋了,系統理解為命令還沒有結束,因而是繼續等待使用者進行輸入,直到讀到結束符,如回車
注2:source=my-vol,target=/webapp
my-vol為要掛載的資料卷,如果資料卷不存在,docker會自動建立
/webapp為容器上目錄,如果目錄不存在, Docke會自動建立
注3:mount選項高階用法
–mount選項的type引數支援三種型別的資料卷
–mount標誌:由多個名值對組成,逗號分隔,每個鍵值由 = 元組組成
1.type=volume普通資料卷(預設即這種型別),對映到主機/var/lib/docker/volumes路徑下;
--mount type=volume,source=my-vol,target=/webapp
注:這是type的預設值
2.bind:繫結資料卷,對映到主機指定路徑下;
--mount type=bind,source=/webapp,destination=/webapp2
3.tmpfs :臨時資料卷,只存在於記憶體中
docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app \
nginx:latest
資料卷容器
資料卷容器
如果使用者需要在多個容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器。
資料卷容器也是一個容器,但是它的目的是專門提供資料卷給其他容器掛載
資料卷容器相關操作
1.新建資料卷容器
docker run -di --name db_data -v /db_data centos:7
注:-v 後面接的共享資料真實存放路徑
2.用容器db1、db2測試資料卷容器是否可用
docker run -di --name db1 --volumes-from db_data centos:7
docker exec -it db1 bash
cd db_data
docker run -di --name db2 --volumes-from db_data centos:7
docker exec -it db2 bash
cd db_data
隨便建立一個aaa.txt檔案就可以檢視效果了
over…
相關文章
- docker筆記12-容器資料卷volumesDocker筆記
- Docker資料卷Docker
- Docker資料管理(資料卷+資料卷容器)Docker
- Docker 資料卷,資料卷容器詳細介紹Docker
- Docker 容器資料卷 三Docker
- docker - [10] 容器資料卷Docker
- Docker容器的資料卷Docker
- Docker容器資料卷、DockerfileDocker
- Docker(六)容器資料卷Docker
- docker系列(四):資料卷Docker
- docker建立mysql、nginx資料卷DockerMySqlNginx
- Mac使用Docker時,卷預設掛載路徑/var/lib/docker/volumes不存在問題MacDocker
- [Docker 系列]docker 學習六,資料卷容器Docker
- [Docker 系列]docker 學習 五,容器資料卷Docker
- Docker-nginx資料卷掛載DockerNginx
- 容器技術之Docker資料卷Docker
- docker 資料卷掛載總結Docker
- 【Docker】資料卷及容器連線Docker
- Docker提交映象-資料卷-視覺化Docker視覺化
- Docker學習筆記:映象、容器、資料卷Docker筆記
- Docker 入門系列二:容器的資料卷Docker
- 『現學現忘』Docker基礎 — 28、Docker容器資料卷介紹Docker
- Docker的那些事兒—Docker卷資料恢復或遷移(33)Docker資料恢復
- Docker 從門到精通(四)一 資料卷的使用Docker
- Docker Swarm 進階:資料卷備份與恢復DockerSwarm
- 『現學現忘』Docker基礎 — 33、Docker資料卷容器的說明與共享資料原理Docker
- 『現學現忘』Docker基礎 — 30、Docker中資料卷相關命令Docker
- 『現學現忘』Docker基礎 — 29、Docker容器資料卷的應用Docker
- 轉載 個人用 How To Remove Docker Images, Containers, and VolumesREMDockerAI
- Docker 學習筆記(第五集:資料卷)Docker筆記
- Docker映象的構建以及資料卷和埠對映Docker
- Docker 基礎知識 - 使用卷(volume)管理應用程式資料Docker
- 容器資料卷
- 資料編織 (Data Fabric) vs 資料網格 (Data Mesh)
- Docker學習總結(四)——容器間的通訊和資料卷Docker
- 資料卷是什麼?資料卷有什麼優勢嗎?
- docker mysql8.0 啟動,掛資料卷,定時備份,恢復~DockerMySql
- Docker教程小白實操入門(21)--如何備份、恢復資料卷Docker