1. 程式人生 > >docker存儲

docker存儲

本質 相同 在那 保持 停止 高效 格式 優先 沒有

一、docker 存儲

1. storage driver

技術分享圖片

容器由最上面一個可寫的容器層,以及若 幹只讀的鏡像層組成,容器的數據就存放 在這些層中。這樣的分層結構最大的特性 是 Copy-on-Write:

1.新數據會直接存放在最上面的容器層。

2.修改現有數據會先從鏡像層將數據復制 到容器層,修改後的數據直接保存在容器 層中,鏡像層保持不變。

3.如果多個層中有命名相同的文件,用戶 只能看到最上面那層中的文件。

分層結構使鏡像和容器的創建、共享以及分發變得非常高效,而這些都要歸功於 Docker storage driver

2.storage driver 選型

Docker 支持多種 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它們都能實現分層的架構,同時又有各自的特性。對於 Docker 用戶來說,具體 選擇使用哪個 storage driver 是一個難題,因為:

1.沒有哪個 driver 能夠適應所有的場景。

2.driver 本身在快速發展和叠代。

不過 Docker 官方給出了一個簡單的答案:

優先使用 Linux 發行版默認的 storage driver。

技術分享圖片

二、Data Volume

Data Volume 本質上是 Docker Host 文件系統中的目錄或文件,能夠直接被 mount 到容 器的文件系統中。Data Volume 有以下特點:

1.Data Volume 是目錄或文件,而非沒有格式化的磁盤(塊設備)。

2.容器可以讀寫 volume 中的數據。

3.volume 數據可以被永久的保存,即使使用它的容器已經銷毀。

技術分享圖片

2.1 、tmpfs mount

應用限制:

1)tmpfs掛載是臨時的,並且僅保留在主機內存中。當容器停止時,將tmpfs刪除安裝,並且不會 保留寫在那裏的文件。

2)與卷和綁定裝入不同,您無法tmpfs在容器之間共享裝載。

2)只有在Linux上運行Docker時才能使用此功能

技術分享圖片

# docker run -d -it --name tmptest --mount type=tmpfs,dst=/app nginx

# docker run -d -it --name tmptest1 --mount type=tmpfs,dst=/app,tmpfsmode=1660 nginx

2.2 Data Volume

docker存儲