elasticsearch入門系列">elasticsearch入門系列
778
2025-03-31
1 docker數據存儲
1.1??數據卷
1.1.1?容器內創建數據卷
數據卷是在一個或多個容器,它繞過Union File System的一個專門指定的目錄。數據卷的目的是持久化數據,獨立于容器的生命周期。docker因此不會自動刪除卷,當你刪除一個容器,也不會“垃圾回收”直到沒有容器再使用。
在docker run時加上-v參數來添加一個數據卷,-v參數也可以使用多次,以掛載多個數據卷。
UbuntuTest:~ ? # docker run -it --name data_volume -v /test ubuntu:14.04 ? /bin/bash
root@0800180dc5be:/# ? ls -l /test
drwxr-xr-x?? ? 2 root root 4096 Sep 20 11:00 test
root@0800180dc5be:/# ? cd /test/
root@0800180dc5be:/test# ? touch test.volume
root@0800180dc5be:/test# ? ls
test.volume
root@0800180dc5be:/test# ? exit
exit
UbuntuTest:~ ? # docker start data_volume
data_volume
UbuntuTest:~ ? # docker attach data_volume
root@0800180dc5be:/#
root@0800180dc5be:/# ? ls -l /test/
total 0
-rw-r--r-- ? 1 root root 0 Sep 20 11:01 test.volume
1.1.2???? 主機目錄作為數據卷
掛載主機目錄為數據卷,必須參照-v hostPATH:containerPATH這種格式,路徑必須為絕對路徑,以保證容器的可移植性。
該功能支持主機目錄和文件作為容器的數據卷。本文3.2.3章節在容器中安裝軟件時需要從主機通過命令拷貝軟件,部分容器不支持scp功能時還無法拷貝,利用該功能實現方式更簡單而不用關注容器是否支持遠程拷貝命令。
UbuntuTest:~ # docker run -it --name data_host_container -v /root:/tmp/root ? ubuntu:14.04 /bin/bash
root@2bda024d88d5:/# ? ls -l /tmp/root/
total 1571632
-rw-r--r--? 1 ? root root??? 148899 Sep? 7 10:41 ? CloudServiceTestTools.tgz
root@2bda024d88d5:/# ? touch /tmp/root/container_data.test
root@2bda024d88d5:/# ? exit
exit
UbuntuTest:~ # ls -l ? container_data.test
-rw-r--r-- 1 root ? root 0 Sep 20 19:12 container_data.test
1.2??? 數據卷容器
如果你有一些持續更新的數據需要在容器之間共享,最好創建數據卷容器。 數據卷容器,其實就是一個正常的容器,專門用來提供數據卷供其它容器掛載的。
步驟1:創建數據卷容器db_volume,其共享目錄為/dbdata
UbuntuTest:~ # docker run -it -d -v ? /dbdata --name db_volume ubuntu:14.04 ? /bin/bash
97aab02e3d582e585f40b92d711869598313eeb4d6b24d595985f192609de412
UbuntuTest:~ # docker ? ps -l
CONTAINER ? ID???? IMAGE???? ? COMMAND???? CREATED????? ? STATUS???? PORTS?????? ? NAMES
97aab02e3d58??? ? ubuntu:14.04?? "/bin/bash"??? 11 seconds ? ago? Up 10 ? seconds????????????? ? db_volume
步驟2:其它容器掛載數據卷容器db_volume的數據卷
UbuntuTest:~ # docker run -it --name db_1 --volumes-from ? db_volume ubuntu:14.04 /bin/bash
root@4123dfc817d2:/# ? echo "This is file of db_1" > /dbdata/db_1_file.log
root@4123dfc817d2:/# ? ls -l /dbdata/
total 4
-rw-r--r-- 1 root ? root 21 Sep 20 11:29 db_1_file.log
步驟3:容器db_1、db_2可同時讀寫數據卷
UbuntuTest:~ # docker run -it --name db_2 --volumes-from ? db_volume ubuntu:14.04 /bin/bash
root@7d399ccbe79e:/# ? cat /dbdata/db_1_file.log
This is file of db_1
轉載請注明出處:華為云博客 https://portal.hwclouds.com/blogs
Docker
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。