6、數據共享與持久化 相似於 Linux 下對目錄或文件進行 mount,
容器中管理數據主要有兩種方式:
數據卷 修改立馬生效,一直存在
數據卷容器 容器之間共享和重用
一、爲何須要數據持久化?
容器只是一個軟件,那麼這個軟件的東西不該該隨着容器的消失而丟失,因此要把例如數據庫的數據作備份,可是咱們不能每次到容器裏進行操做,因此
二、掛載數據卷 -v或者-mount
三、建立數據卷
建立 docker volume create my-vol 刪除 docker volume rm my-vol
docker run -d -P --name web -v /src/webap:/opt/webapp centos nginx -x
掛載一個主機的目錄做爲數據卷,/src/webap本地目錄,到容器/opt/webapp目錄
docker run -d -P --name web -v /src/webap:/opt/webapp:ro centos nginx -x
掛載一個主機的目錄做爲數據卷,
/src/webap本地目錄,到容器/opt/webapp目錄,加粗的可選只讀或者讀寫,
若是沒有本地目錄,那就是在容器建立了一個目錄。
數據卷容器能夠實現多個容器共享數據 例如建立數據卷容器,並讓兩個容器都掛載到這裏
docker run -ti -v /dbdata --name dbdata ubuntu 建立
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
四、數據卷備份
這個備份我認爲是咱們如何利用數據捲進行備份,好比建立一個本地的文件my-vol,那麼能夠把這個掛載到容器當中,把備份數據備份到這個目錄,那麼即使是容器消失了,這個本分仍是有的,跟容器是分開的。
五、數據卷插件介紹
六、持久化實踐
七、實際場景落地介紹和剖析nginx
好比備份數據
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
恢復
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash 建立數據卷的容器
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar 恢復web