<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 數據卷與目錄 ~~~ docker run -itd --name 【容器的名字】 -v 【宿主機目錄】:【容器目錄】 【依賴鏡像】【命令可選】 docker run -itd --name tmp-nginx -v /home/abc/tmp/:/tmp-text nginx ~~~ # 數據卷與文件 ~~~ docker run -itd --name 【容器的名字】 -v 【宿主機文件】:【容器文件】 【依賴鏡像】【命令可選】 docker run -itd --name tmp-txt -v /home/abc/tmp/hello.go:/nihao/nihao.sh nginx ~~~ # 創建1個數據卷容器 格式 : ~~~ docker create -v 【容器數據卷目錄】 --name 【容器名稱】 【依賴的鏡像名稱 】 【命令可選】 docker create -v /data-tmp --name v-tmp nginx ~~~ # 創建兩個容器掛載同一個數據卷容器進行交互 格式: ~~~ docker run --volumes-from【數據卷容器的id或名字】-itd --name 【容器名字】 【鏡像名字】【參數可選] docker run --volumes-from v-tmp -itd --name tmp01 nginx docker run --volumes-from v-tmp -itd --name tmp02 nginx ~~~ # 數據卷容器 需要在多個容器之間共享一些持續更新的數據,最簡單的方式就是使用數據卷容器.數據卷容器也是一個容器,但是他的目的是專門用來提供數據卷供其他容器掛載 數據卷容器:使用特定容器維護數據卷 如果使用數據卷容器,在多個容器之間共享數據,并永久保存這些數據,需要有一個規范流程才能做到 1. 創建數據卷容器 2. 其他容器掛載數據卷容器 注意: 數據卷容器自身并不需要啟動,但是啟動的時候依然可以進行數據卷容器的工作 ## 創建一個數據卷容器 創建兩個容器,同時掛載數據卷容器 ~~~ #命令格式: docker create -v [容器數據卷目錄] --name [容器名字][鏡像名稱] [命令(可選)] #執行效果 $ docker create -v /data --name v1-test1 nginx ~~~ ## 創建兩個容器,同時掛載數據卷容器 ~~~ #命令格式: docker run --volumes-from [數據卷容器id/name] -tid --name [容器名字][鏡像名稱] [命令(可 選)] #執行效果: #創建 vc-test1 容器: docker run --volumes-from 4693558c49e8 -tid --name vc-test1 nginx /bin/bash #創建 vc-test2 容器: docker run --volumes-from 4693558c49e8 -tid --name vc-test2 nginx /bin/bash ~~~ ## 確認卷容器共享 ~~~ #進入vc-test1,操作數據卷容器: :~$ docker exec -it vc-test1 /bin/bash root@c408f4f14786:/# ls /data/ root@c408f4f14786:/# echo 'v-test1' > /data/v-test1.txt root@c408f4f14786:/# exit #進入vc-test2,確認數據卷: :~$ 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進行驗證 :~$ 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 ~~~ # 數據備份原理 為什么需要數據備份和恢復? 工作中很多的容器的數據需要查看,所有需要備份將數據很輕松的拿到本地目錄 ![](https://box.kancloud.cn/f0a069f7321ad1eba8554aa16b3bb9ea_583x685.png) 數據備份方案: 1. 創建一個掛載數據卷容器的容器 2. 掛載宿主機本地目錄作為備份數據卷 3. 將數據卷容器的內容備份到宿主機本地目錄掛載的數據卷中 4 完成備份操作后銷毀剛創建的容器 ## 數據備份實踐 在2.3.4的數據卷容器基礎上做數據的備份 ~~~ #命令格式: $ docker run --rm --volumes-from [數據卷容器id/name] -v [宿主機目錄]:[容器目錄][鏡像名稱] [備份命令] #命令演示: #創建備份目錄: $ mkdir /backup/ #創建備份的容器: $ docker run --rm --volumes-from 60205766d61a -v /home/itcast/backup/:/backup/ nginx tar zcPf /backup/data.tar.gz /data #驗證操作: $ ls /backup $ zcat /backup/data.tar.gz ~~~ 注釋: -P:使用原文件的原來屬性(屬性不會依據使用者而變),恢復字段到它們的原始方式,忽略現有的用戶權 限屏蔽位(umask)。 加了\-p之后,tar進行解壓后,生成的文件的權限,是直接取自tar包里面文件的權限(不會再 使用該用戶的umask值進行運算),那么不加\-p參數,將還要再減去umask的值(位運算的減),但是如果使用 root用戶進行操作,加不加\-p參數都一樣。 # 數據還原 ![](https://box.kancloud.cn/73eb01210e0a00e80f0da3ede34914a0_647x691.png) 1. 創建一個新的數據卷容器(或刪除原數據卷容器的內容) 2. 創建一個新容器,掛載數據卷容器,同時掛載本地的備份目錄作為數據卷 3. 將要恢復的數據解壓到容器中 4. 完成還原操作后銷毀剛創建的容器 ## 數據還原實踐 ~~~ #命令格式: docker run --rm -itd --volumes-from [數據要到恢復的容器] -v [宿主機備份目錄]:[容器備份目錄] [鏡像名稱] [解壓命令] #命令實踐: #啟動數據卷容器 $ docker start c408f4f14786 #刪除源容器內容: $ docker exec -it vc-test1 bash root@c408f4f14786:/# rm -rf /data/* #恢復數據: docker run --rm --volumes-from v-test -v /home/itcast/backup/:/backup/ nginx tar xPf /backup/data.tar.gz -C /data #驗證: :~$ docker exec -it vc-test1/bin/bash root@c408f4f14786:/# ls /data/data/ v-test1.txt v-test2.txt #新建新的數據卷容器: :~$ docker create -v /newdata --name v-test2 nginx #簡歷新的容器掛載數據卷容器 :~$ docker run --volumes-from a7e9a33f3acb -tid --name vc-test3 nginx /bin/bash #恢復數據: docker run --rm --volumes-from v-test2 -v /home/itcast/backup/:/backup/ nginx tar xPf /backup/data.tar.gz -C /newdata #驗證: :~$ docker exec -it vc-test3 /bin/bash root@c408f4f14786:/# ls /newdata v-test1.txt v-test2.txt ~~~ 注意: 解壓的時候,如果使用目錄的話,一定要在解壓的時候使用 \-C 制定掛載的數據卷容器,不然的話容器數據 是無法恢復的,因為容器中默認的backup目錄不是數據卷,即使解壓后,也看不到文件。 數據是最寶貴的資源,docker在設計上考慮到了這點,并且為數據的操作提供了充分的支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看