方槍槍的java世界

          不要因?yàn)轱L(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

          Docker學(xué)習(xí)筆記(六)容器數(shù)據(jù)管理

          八、容器數(shù)據(jù)管理

          docker管理數(shù)據(jù)的方式有兩種:

          • 數(shù)據(jù)卷
          • 數(shù)據(jù)卷容器

          8.1 數(shù)據(jù)卷

          數(shù)據(jù)卷是一個(gè)或多個(gè)容器專門指定繞過Union File System的目錄,為持續(xù)性或共享數(shù)據(jù)提供一些有用的功能:

          • 數(shù)據(jù)卷可以在容器間共享和重用
          • 數(shù)據(jù)卷數(shù)據(jù)改變是直接修改的
          • 數(shù)據(jù)卷數(shù)據(jù)改變不會(huì)被包括在容器中
          • 數(shù)據(jù)卷是持續(xù)性的,直到?jīng)]有容器使用它們

          添加一個(gè)數(shù)據(jù)卷

          你可以使用-v選項(xiàng)添加一個(gè)數(shù)據(jù)卷,或者可以使用多次-v選項(xiàng)為一個(gè) docker 容器運(yùn)行掛載多個(gè)數(shù)據(jù)卷。

          $ sudo docker run --name data -v /data -t -i ubuntu:14.04 /bin/bash # 創(chuàng)建數(shù)據(jù)卷綁定到到新建容器,新建容器中會(huì)創(chuàng)建 /data 數(shù)據(jù)卷 bash-4.1# ls -ld /data/
          drwxr-xr-x 2 root root 4096 Jul 23 06:59 /data/
          bash-4.1# df -Th
          Filesystem    Type    Size  Used Avail Use% Mounted on
          ... ...
                        ext4     91G  4.6G   82G   6% /data

          創(chuàng)建的數(shù)據(jù)卷可以通過docker inspect獲取宿主機(jī)對(duì)應(yīng)路徑

          $ sudo docker inspect data
          ... ... "Volumes": { "/data": "/var/lib/docker/vfs/dir/151de401d268226f96d824fdf444e77a4500aed74c495de5980c807a2ffb7ea9" }, # 可以看到創(chuàng)建的數(shù)據(jù)卷宿主機(jī)路徑 ... ...

          或者直接指定獲取

          $ sudo docker inspect --format="{{ .Volumes }}" data
          map[/data: /var/lib/docker/vfs/dir/151de401d268226f96d824fdf444e77a4500aed74c495de5980c807a2ffb7ea9]

          掛載宿主機(jī)目錄為一個(gè)數(shù)據(jù)卷

          -v選項(xiàng)除了可以創(chuàng)建卷,也可以掛載當(dāng)前主機(jī)的一個(gè)目錄到容器中。

          $ sudo docker run --name web -v /source/:/web -t -i ubuntu:14.04 /bin/bash
          bash-4.1# ls -ld /web/
          drwxr-xr-x 2 root root 4096 Jul 23 06:59 /web/
          bash-4.1# df -Th
          ... ...
                        ext4     91G  4.6G   82G   6% /web
          bash-4.1# exit 

          默認(rèn)掛載卷是可讀寫的,可以在掛載時(shí)指定只讀

          $ sudo docker run --rm --name test -v /source/:/test:ro -t -i ubuntu:14.04 /bin/bash

          8.2 創(chuàng)建和掛載一個(gè)數(shù)據(jù)卷容器

          如果你有一些持久性的數(shù)據(jù)并且想在容器間共享,或者想用在非持久性的容器上,最好的方法是創(chuàng)建一個(gè)數(shù)據(jù)卷容器,然后從此容器上掛載數(shù)據(jù)。

          創(chuàng)建數(shù)據(jù)卷容器

          $ sudo docker run -t -i -d -v /test --name test ubuntu:14.04 echo hello

          使用--volumes-from選項(xiàng)在另一個(gè)容器中掛載 /test 卷。不管 test 容器是否運(yùn)行,其它容器都可以掛載該容器數(shù)據(jù)卷,當(dāng)然如果只是單獨(dú)的數(shù)據(jù)卷是沒必要運(yùn)行容器的。

          $ sudo docker run -t -i -d --volumes-from test --name test1 ubuntu:14.04 /bin/bash

          添加另一個(gè)容器

          $ sudo docker run -t -i -d --volumes-from test --name test2 ubuntu:14.04 /bin/bash

          也可以繼承其它掛載有 /test 卷的容器

          $ sudo docker run -t -i -d --volumes-from test1 --name test3 ubuntu:14.04 /bin/bash

          非常詳細(xì)的 Docker 學(xué)習(xí)筆記

          8.3 備份、恢復(fù)或遷移數(shù)據(jù)卷

          備份

          $ sudo docker run --rm --volumes-from test -v $(pwd):/backup ubuntu:14.04 tar cvf /backup/test.tar /test
          tar: Removing leading `/' from member names
          /test/
          /test/b
          /test/d
          /test/c
          /test/a

          啟動(dòng)一個(gè)新的容器并且從test容器中掛載卷,然后掛載當(dāng)前目錄到容器中為 backup,并備份 test 卷中所有的數(shù)據(jù)為 test.tar,執(zhí)行完成之后刪除容器--rm,此時(shí)備份就在當(dāng)前的目錄下,名為test.tar。

          $ ls # 宿主機(jī)當(dāng)前目錄下產(chǎn)生了 test 卷的備份文件 test.tar test.tar

          恢復(fù)

          你可以恢復(fù)給同一個(gè)容器或者另外的容器,新建容器并解壓備份文件到新的容器數(shù)據(jù)卷

          $ sudo docker run -t -i -d -v /test --name test4 ubuntu:14.04  /bin/bash $ sudo docker run --rm --volumes-from test4 -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/test.tar -C / # 恢復(fù)之前的文件到新建卷中,執(zhí)行完后自動(dòng)刪除容器 test/ test/b test/d test/c test/a

          8.4 刪除 Volumes

          Volume 只有在下列情況下才能被刪除:

          • docker rm -v刪除容器時(shí)添加了-v選項(xiàng)
          • docker run --rm運(yùn)行容器時(shí)添加了--rm選項(xiàng)

          否則,會(huì)在/var/lib/docker/vfs/dir目錄中遺留很多不明目錄。

          參考文檔:

          posted on 2016-12-27 21:39 做強(qiáng)大的自己 閱讀(139) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 东乌珠穆沁旗| 望谟县| 清涧县| 济源市| 米脂县| 淮阳县| 宜兰市| 如东县| 西青区| 嘉善县| 浦北县| 清河县| 湖口县| 通城县| 安顺市| 广州市| 贞丰县| 文登市| 临海市| 津南区| 安顺市| 建始县| 崇礼县| 龙海市| 平利县| 上高县| 微博| 扶绥县| 肥东县| 平谷区| 乳山市| 陇西县| 滁州市| 通山县| 富蕴县| 福建省| 隆回县| 普兰县| 镇雄县| 康乐县| 吴忠市|