数据卷
數(shù)據(jù)卷與目錄
docker run -itd --name 【容器的名字】 -v 【宿主機(jī)目錄】:【容器目錄】 【依賴鏡像】【命令可選】docker run -itd --name tmp-nginx -v /home/abc/tmp/:/tmp-text nginx數(shù)據(jù)卷與文件
docker run -itd --name 【容器的名字】 -v 【宿主機(jī)文件】:【容器文件】 【依賴鏡像】【命令可選】docker run -itd --name tmp-txt -v /home/abc/tmp/hello.go:/nihao/nihao.sh nginx創(chuàng)建1個(gè)數(shù)據(jù)卷容器
格式 :
docker create -v 【容器數(shù)據(jù)卷目錄】 --name 【容器名稱】 【依賴的鏡像名稱 】 【命令可選】docker create -v /data-tmp --name v-tmp nginx創(chuàng)建兩個(gè)容器掛載同一個(gè)數(shù)據(jù)卷容器進(jìn)行交互
格式:
docker run --volumes-from【數(shù)據(jù)卷容器的id或名字】-itd --name 【容器名字】 【鏡像名字】【參數(shù)可選]docker run --volumes-from v-tmp -itd --name tmp01 nginx docker run --volumes-from v-tmp -itd --name tmp02 nginx數(shù)據(jù)卷容器
需要在多個(gè)容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式就是使用數(shù)據(jù)卷容器.數(shù)據(jù)卷容器也是一個(gè)容器,但是他的目的是專門用來提供數(shù)據(jù)卷供其他容器掛載
數(shù)據(jù)卷容器:使用特定容器維護(hù)數(shù)據(jù)卷
如果使用數(shù)據(jù)卷容器,在多個(gè)容器之間共享數(shù)據(jù),并永久保存這些數(shù)據(jù),需要有一個(gè)規(guī)范流程才能做到
注意: 數(shù)據(jù)卷容器自身并不需要啟動,但是啟動的時(shí)候依然可以進(jìn)行數(shù)據(jù)卷容器的工作
創(chuàng)建一個(gè)數(shù)據(jù)卷容器
創(chuàng)建兩個(gè)容器,同時(shí)掛載數(shù)據(jù)卷容器
#命令格式: docker create -v [容器數(shù)據(jù)卷目錄] --name [容器名字][鏡像名稱] [命令(可選)] #執(zhí)行效果 $ docker create -v /data --name v1-test1 nginx創(chuàng)建兩個(gè)容器,同時(shí)掛載數(shù)據(jù)卷容器
#命令格式: docker run --volumes-from [數(shù)據(jù)卷容器id/name] -tid --name [容器名字][鏡像名稱] [命令(可 選)] #執(zhí)行效果: #創(chuàng)建 vc-test1 容器: docker run --volumes-from 4693558c49e8 -tid --name vc-test1 nginx /bin/bash #創(chuàng)建 vc-test2 容器: docker run --volumes-from 4693558c49e8 -tid --name vc-test2 nginx /bin/bash確認(rèn)卷容器共享
#進(jìn)入vc-test1,操作數(shù)據(jù)卷容器: :~$ docker exec -it vc-test1 /bin/bash root@c408f4f14786:/# ls /data/ root@c408f4f14786:/# echo 'v-test1' > /data/v-test1.txt root@c408f4f14786:/# exit #進(jìn)入vc-test2,確認(rèn)數(shù)據(jù)卷: :~$ docker exec -it vc-test2 /bin/bash root@7448eee82ab0:/# echo 'v-test2' > /data/v-test2.txt root@7448eee82ab0:/# ls /data/ v-test1.txt root@7448eee82ab0:/# exit #回到vc-test1進(jìn)行驗(yàn)證 :~$ docker exec -it vc-test1 /bin/bash root@c408f4f14786:/# ls /data/ v-test1.txt v-test2.txt root@c408f4f14786:/# cat /data/v-test2.txt v-test2數(shù)據(jù)備份原理
為什么需要數(shù)據(jù)備份和恢復(fù)? 工作中很多的容器的數(shù)據(jù)需要查看,所有需要備份將數(shù)據(jù)很輕松的拿到本地目錄
數(shù)據(jù)備份方案:
數(shù)據(jù)備份實(shí)踐
在2.3.4的數(shù)據(jù)卷容器基礎(chǔ)上做數(shù)據(jù)的備份
#命令格式: $ docker run --rm --volumes-from [數(shù)據(jù)卷容器id/name] -v [宿主機(jī)目錄]:[容器目錄][鏡像名稱] [備份命令] #命令演示: #創(chuàng)建備份目錄: $ mkdir /backup/ #創(chuàng)建備份的容器: $ docker run --rm --volumes-from 60205766d61a -v /home/itcast/backup/:/backup/ nginx tar zcPf /backup/data.tar.gz /data #驗(yàn)證操作: $ ls /backup $ zcat /backup/data.tar.gz注釋: -P:使用原文件的原來屬性(屬性不會依據(jù)使用者而變),恢復(fù)字段到它們的原始方式,忽略現(xiàn)有的用戶權(quán) 限屏蔽位(umask)。 加了-p之后,tar進(jìn)行解壓后,生成的文件的權(quán)限,是直接取自tar包里面文件的權(quán)限(不會再 使用該用戶的umask值進(jìn)行運(yùn)算),那么不加-p參數(shù),將還要再減去umask的值(位運(yùn)算的減),但是如果使用 root用戶進(jìn)行操作,加不加-p參數(shù)都一樣。
數(shù)據(jù)還原
數(shù)據(jù)還原實(shí)踐
#命令格式: docker run --rm -itd --volumes-from [數(shù)據(jù)要到恢復(fù)的容器] -v [宿主機(jī)備份目錄]:[容器備份目錄] [鏡像名稱] [解壓命令] #命令實(shí)踐: #啟動數(shù)據(jù)卷容器 $ docker start c408f4f14786 #刪除源容器內(nèi)容: $ docker exec -it vc-test1 bash root@c408f4f14786:/# rm -rf /data/* #恢復(fù)數(shù)據(jù): docker run --rm --volumes-from v-test -v /home/itcast/backup/:/backup/ nginx tar xPf /backup/data.tar.gz -C /data #驗(yàn)證: :~$ docker exec -it vc-test1/bin/bash root@c408f4f14786:/# ls /data/data/ v-test1.txt v-test2.txt #新建新的數(shù)據(jù)卷容器: :~$ docker create -v /newdata --name v-test2 nginx #簡歷新的容器掛載數(shù)據(jù)卷容器 :~$ docker run --volumes-from a7e9a33f3acb -tid --name vc-test3 nginx /bin/bash #恢復(fù)數(shù)據(jù): docker run --rm --volumes-from v-test2 -v /home/itcast/backup/:/backup/ nginx tar xPf /backup/data.tar.gz -C /newdata #驗(yàn)證: :~$ docker exec -it vc-test3 /bin/bash root@c408f4f14786:/# ls /newdata v-test1.txt v-test2.txt注意: 解壓的時(shí)候,如果使用目錄的話,一定要在解壓的時(shí)候使用 -C 制定掛載的數(shù)據(jù)卷容器,不然的話容器數(shù)據(jù) 是無法恢復(fù)的,因?yàn)槿萜髦心J(rèn)的backup目錄不是數(shù)據(jù)卷,即使解壓后,也看不到文件。
數(shù)據(jù)是最寶貴的資源,docker在設(shè)計(jì)上考慮到了這點(diǎn),并且為數(shù)據(jù)的操作提供了充分的支持
總結(jié)
- 上一篇: 容器相关操作
- 下一篇: 后台开发必读书籍--大话数据结构