您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Docker數據卷怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Docker數據卷怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
有時候需要使用數據庫,但是又希望它的數據能保存在本地,Docker中提供了數據卷可以供你方便的操作數據。數據卷是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性:
?
數據卷可以在容器之間共享和重用
對數據卷的修改會立馬生效
對數據卷的更新,不會影響鏡像
數據卷默認會一直存在,即使容器被刪除
*注意:數據卷的使用,類似于 Linux 下對目錄或文件進行 mount,鏡像中的被指定為掛載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數據卷。
添加一個數據卷:
# docker run -d -it --name busybox -v /data/ busybox
這會在容器內創建一個 /data 目錄,并加載一個數據卷到容器的 /data 目錄。
進入容器:
# docker exec -it busybox sh
查看目錄映射:
# docker inspect -f {{.Volumes}} busybox map[/data:/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data] 可以看到將容器中的 /data 目錄映射到了 /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data 這個目錄下,所以數據在容器中的 /data 目錄和此目錄下是同步的。 [root@sta2 data]# cd /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data[root@sta2 _data]# touch b
在容器中 /data 目錄下查看:
/data # lsa b b 文件依然存在。
數據卷是被設計用來持久化數據的,它的生命周期獨立于容器,Docker不會在容器被刪除后自動刪除數據卷,并且也不存在垃圾回收這樣的機制來處理沒有任何容器引用的數據卷。如果需要在刪除容器的同時移除數據卷。可以在刪除容器的時候使用 docker rm -v 這個命令。
[root@sta2 docker]# docker stop eec30d8d6fce[root@sta2 docker]# docker rm -v eec30d8d6fce
使用 -v 標記也可以指定掛載一個本地主機的目錄到容器中去,-v 標記也可以從主機掛載單個文件到容器中
[root@sta2 docker]# docker run -it --name mybusybox -v /data:/data busybox sh
這種方法相當于在本機中指定了要映射的目錄,將本地的數據卷 /data 目錄加載到容器中的 /data 目錄。
/ # cd /data//data # lsa /data # touch c
然后在本機的 /data 目錄查看 c 文件是否存在:
[root@sta2 data]# ls a c
Docker 掛載數據卷的默認權限是讀寫,用戶也可以通過 :ro 指定為只讀。
# docker run -it --name mybusybox -v /data:/data:ro busybox sh
如果你有一些持續更新的數據需要在容器之間共享,最好創建數據卷容器。
[root@sta2 data]# docker run -d -v /data/ --name dbdata busybox #首先,創建一個名為 dbdata 的數據卷容器
然后,在其他容器中使用 –volumes-from 來掛載 dbdata 容器中的數據卷。
# docker run -d --volumes-from dbdata --name db1 nginx# docker run -d --volumes-from dbdata --name db2 nginx
也可以使用 –volumes-from 來掛載來自多個容器的多個數據卷:
# docker run -d --name db3 --volumes-from db1 --volumes-from db nginx
提示:使用 –volumes-from 參數所掛載數據卷的容器自己并不需要保持在運行狀態。
備份數據卷
首先使用 –volumes-from 標記來創建一個加載 dbdata 容器卷的容器,并從主機掛載當前目錄到容器的 /backup 目錄。命令如下:
# docker run --volumes-from dbdata -v /data:/backup busybox tar cvf /backup/backup.tar.gz /data/
恢復
如果要恢復數據到一個容器,首先創建一個帶有空數據卷的容器 dbdata2。
# docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
然后創建另一個容器,掛載 dbdata2 容器卷中的數據卷,并使用 untar 解壓備份文件到掛載的容器卷中。
# docker run --volumes-from dbdata2 -v /data:/backup busybox tar xvf /backup/backup.tar.gz
為了查看/驗證恢復的數據,可以再啟動一個容器掛載同樣的容器卷來查看
# docker run --volumes-from dbdata2 busybox /bin/ls /dbdata
刪除數據
如果刪除了掛載的容器(db1 和 db2),數據卷并不會被自動刪除。如果要刪除一個數據卷,必須在刪除最后一個還掛載著它的容器時使用 docker rm -v 命令來指定同時刪除關聯的容器。
讀到這里,這篇“Docker數據卷怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。