這是我參與8月更文挑戰的第12天,活動詳情查看:8月更文挑戰nginx
微信公衆號搜索 程序媛小莊 人生苦短 一塊兒學Pythonweb
在前面的文章中經過-v
參數介紹了一下docker數據卷的簡單使用,可是並無詳細展開,本文就針對docker數據卷的具體使用進行詳細的介紹,XDM還猶豫什麼?衝鴨!!!docker
用來實現宿主機與容器之間數據共享的一種機制。tomcat
數據卷還能夠在容器之間共享和重用,具體來講就是當容器中有須要進行持久化的數據時,能夠首先使用自動數據卷的方式,將容器中的數據持久化出來,當再次啓動相同的容器時只須要使用自定義數據捲進行指定數據卷就能夠讀取相同的數據了。這就是容器之間的共享和重用。bash
另外對數據捲進行修改時,會當即影響到對應的容器。若是想要控制宿主機改變容器發生改變,可是容器改變宿主機不發生改變的話,能夠經過ro
參數進行控制,表示容器內不能進行寫操做。微信
docker run -d -p 8080:8080 --name nginx01 -v /root/apps:/usr/local/apps:ro nginx
複製代碼
還須要注意的是,對數據卷的操做不會影響到鏡像,而且若是把容器刪掉的話,數據卷不會受到影響。markdown
在啓動容器時,數據卷的參數是-v
,具體命令爲docker run -d -p 8080:8080 --name tomcat01 -v 宿主機目錄:容器內目錄 tomcat:latest
。注意宿主機目錄必須是絕對路徑,使用該種方式若是容器內部的路徑有數據,這些數據會被宿主機上對應的數據覆蓋。app
docker run -d -p 8080:8080 --name tomcat01 -v /root/apps:/usr/local/webapps tomcat:latest
# 若是宿主機目錄中沒有任何文件或數據那麼容器內對應的目錄中的數據也會被清空
複製代碼
宿主機的目錄能夠不指定,隨便任意的名稱,該名稱就是數據卷的別名,別名所對應的目錄在宿主機中並不存在,docker就會在宿主機上自動爲aa構建一個路徑,而且該目錄是空的,使用這種方式有一個好處就是,由於宿主機上的目錄是空的,就會將容器中對應的目錄下的文件所有拷貝出來放在宿主機的目錄上。webapp
docker run -d -p 8080:8080 --name tomcat01 -v aa:/usr/local/webapps tomcat:latest
複製代碼
docker volumes ls :查看有哪些數據卷post
docker volume inspect 卷名:查看數據卷的詳細信息,包括數據卷的位置。就不須要find
命令了
docker volume create 卷名:建立數據卷
docker run -v a(數據卷名稱) ......:當數據卷名字對應的數據卷存在時指定數據卷docker就不會自動建立數據捲了,而且會把容器內的數據複製到數據卷。
docker volume prune:刪除沒有使用的數據卷。
docker volume rm 數據卷名:刪除指定的數據卷。
文章首發於微信公衆號程序媛小莊,同步於掘金。
碼字不易,轉載請說明出處,走過路過的小夥伴們伸出可愛的小指頭點個贊再走吧(╹▽╹)