預設容器的資料的讀寫發生在容器的儲存層,當容器被刪除時其上的資料將會丟失。所以我們應該盡量保證容器儲存層不發生寫操作,為了實現資料的持久化儲存我們需要選擇一種方案來儲存資料,當前有以下幾種方式:
無論你選擇哪種mount型別,從container內部看沒有區別,它們都是目錄或者檔案。資料都是寄存在宿主機上,只不過具體位置有所區別,如下圖:
使用資料卷的步驟一般分為兩步:
建立乙個資料卷
使用-v
或--mount
引數將資料卷掛載容器指定目錄中,這樣所有該容器針對該指定目錄的寫操作都會儲存在宿主機上的volume中。
1、映象run的使用 加上引數配置與繫結安裝不同,您可以在任何容器範圍之外建立和管理卷。2、 commit提交副本映象,重新啟動新映象加上引數配置(針對容器已經有資料的情況下)
docker volume create my-vol #建立資料卷
docker volume ls #檢視有哪些卷
docker volume inspect my-vol #檢視卷詳情
docker rm -f web #強制刪除執行中的容器
docker volume rm my-vol #刪除卷
docker volume prune #清理無用的卷
docker ps -s #可以檢視容器的大小是沒有增加的
建立乙個卷(volume):
$ docker volume create my-vol
檢視volumes:
$ docker volume ls
local my-vol
$ docker volume inspect my-vol
[ ,
"mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"name": "my-vol",
"options": {},
"scope": "local"}]
我們可以看到建立的volume my-vol儲存在目錄/var/lib/docker/volumes/
下,以後所有針對該volume的寫資料都會儲存中目錄/var/lib/docker/volumes/my-vol/_data
下。
刪除乙個volume:
$ docker volume rm my-vol
或者刪除所有未使用的volumes:
docker volume prune
如果您使用尚不存在的卷啟動容器,則docker將為您建立該卷。
-v或--volume
由三個字段組成,以冒號(:)分隔。這些字段必須以正確的順序排列,並且每個欄位的含義不是立即顯而易見的。
$ docker run -d -v nginx-vol:/usr/share/nginx/html,readonly nginx:latest
檢視容器是否掛載儲存呢?
docker inspect eb5e31fef691
使用docker inspect 容器id
驗證建立卷並安裝正確。查詢mounts
部分
"mounts": [
],
請參考這篇文章:docker容器資料持久化問題及解決方案
Docker之容器資料卷
資料?如果資料都在容器中,那麼我們容器刪除,資料就會丟失!需求 資料可以持久化 mysql,容器刪除了,刪庫跑路!需求 mysql資料可以儲存在本地!容器之間可以有乙個資料共享的技術!docker容器中產生的資料,同步到本地!這就是卷技術!目錄的掛載,將我們容器內的目錄,掛載到linux上面!目的 ...
docker之資料儲存
docker映象是乙個唯讀的檔案系統,容器是映象的執行環境,即在映象基礎上再加一層可讀寫的層,因此所有容器中的資料寫入時均寫到容器中,會隨著容器的銷毀而消失。為確保容器可以儲存資料,docker引入資料卷volume來處理此情況。volume就是目錄或者檔案,它可以繞過預設的聯合檔案系統,而以正常的...
Docker 入門之docker容器建立
使用docker容器的大多數人都是因為想要隔離不同執行環境的差異,使得自己的應用能更好的移植和部署。那麼我們來看看掌握docker需要掌握哪些方面。1,搭建docker環境 2,編譯映象並將其執行成容器 3,將自己的應用壓縮在多個容器中 4,在乙個集群上部署自己的應用 5,通過增加後台資料庫來儲存服...