volumes
是官方比較推薦也是大型的集群比較常見的一種方式??梢岳斫鉃樵谧约旱乃拗鳈C或者云端或者在某一個區域創建一塊磁盤專門去存放容器里的數據或文件。把這個容器里邊的數據或者文件還有目錄等都規劃好,再去啟動容器。正常在老一些的版本里邊首先必須要去創建 volumes,否則是沒有辦法創建成功的。新版本好像不寫命令也可以創建成功,具體可以查詢官方關于 volumes 的文檔。
volumes是Docker持久化數據的最好方式。因為與容器的耦合度最低。多個容器可以同時訪問一個volumes。遠程主機或非本機常用這種方式。需要先創建。之后再進行使用。
創建使用:
docker volume create test1
docker run -itd -p 8800:80 -v test1:/usr/share/Nginx/html nginx:v1
刪除某個卷:
docker volume rm 卷名
刪除所有未使用的卷:
docker volume prune
列出所有卷:
docker volume ls
查看某個卷的信息:
docker volume inspect 卷名
bind—mount
將宿主機中的文件、目錄 mount 到容器上。本質上是宿主機、contAIner 之間共享宿主機文件系統。這種持久化方法更導致 container 與宿主機的耦合過于緊密,所以不推薦使用。
常用于一些監控類container,通過讀取宿主機固定文件中的數據實現監控;臨時共享文件(如配置文件等)或源碼文件。
掛載到容器:-v 或—volume
使用:
docker run -itd -p 8801:80 -v /var/log/cont/Apache1:/var/log/httpd/ apache:new2
tmpfs
將數據存于宿主機內存中。docker 可將用戶名與密碼等敏感數據保存在某個數據庫中,當啟動需要訪問這些敏感數據的 container 或者 service 時,docker 會在宿主機上創建一個 tmpfs,然后將敏感數據從數據庫讀出寫到 tmpfs 中,再將 tmpfs mount 到 container 中,安樣能保證數據安全。當容器停止運行時,則相應的 tmpfs 也從系統中刪除。
比較少用,常見用于對訪問有大量讀寫,或安全層面考慮。
docker run -itd --name tmptest --tmpfs /root nginx:latest






