Docker持久化儲存與資料共享
阿新 • • 發佈:2019-01-03
一.Docker持久化資料的方案
- 基於本地檔案系統的Volume:可以在執行docker create或docker run時,通過-v引數將主機的目錄作為容器的資料卷。這部分功能便是基於本地檔案系統的volume管理。
- 基於plugin的Volume:支援第三方的儲存方案,比如NAS,aws
1.Volume的型別
- 受管理的data Volume,由docker後臺自動建立
- 繫結掛載的Volume,具體掛載位置可以由使用者指定
二.資料持久化:Data Volume
1.操作流程
- 注意:mysql的Dockerfile中由
VOLUME ["/var/lib/mysql"]
- 執行
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
啟用一個mysql的image容器,其中-v
後跟的mysql表示volume別名,冒號後面的路徑為volume本地儲存的地址 - 檢視
sudo docker volume ls
檢視docker的volume,會發現自動生成了一個volume - 通過
sudo docker volume inspect volume的NAME值
- 如果希望刪除volume,則可以使用
sudo docker volume rm volumeNAME
2.恢復volume資料
- 上述操作後會將資料儲存到/var/lib/mysql中,我們可以對container中的mysql資料進行增刪改查操作
- 通過
sudo docker rm mysql1
移除container - 此時檢視/var/lib/mysql路徑仍然儲存volume
- 我們可以使用
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
三.資料持久化:Bind Mounting
1.與Data Volume的區別
- Data Volume需要在Dockerfile中定義要建立的volume
- Bind Mounting是在執行時指定本地目錄與容器中目錄的一一對應關係即可
docker run -v /home/aaa:/root/aaa