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