中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker中怎么如何管理數據

發布時間:2021-07-28 17:51:26 來源:億速云 閱讀:150 作者:chen 欄目:云計算

本篇內容主要講解“Docker中怎么如何管理數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker中怎么如何管理數據”吧!

Managing Data in Containers

到目前我們介紹了一些Docker的基礎感念, 知道了如何使用Docker的image, 也知道了如何在多個container間通過網絡通訊. 在這章里我們將介紹如何在docker的container內管理數據以及如何在不同的container間共享數據。

我們將介紹兩種主要的在docker中管理數據的方法:

  • Data volumes 和

  • Data volume container

Data volumes

一個 data volume 就是一個在一個或者多個container里的特殊用途的目錄。它繞過了 Union File System (譯者: 這里不確定, 需要研究)為持久化數據、共享數據提供了下面這一些有用的特性:

  • Data volumes 可以在不同的container之間共享和重用數據

  • 對 Data volume 的修改及時生效(譯者:data volumn是一個目錄, 多個container都掛載這個目錄, 具體的可以通過 docker inspect 看 volumne的信息)

  • 對 data volume 修改內容在升級image的時候不會被包括進去 (譯者:在docker的整個設計中image是一個無狀態的, 這樣對升級重用非常有利。而標記狀態的數據, 比如數據庫的數據, 生產的log之類的應該放到volume里。volume的持久化和恢復在下面有介紹, 是通過文件的形式的, 而不是通過image)

  • Volumes 的持久化直到沒有container使用他們

Adding a data volume

你可以在docker run 的時候使用 -v 來添加一個 data volume。這個參數在docker run 的時候可以多次使用來添加多個 data volumes。讓我們為我們的web application container掛載一個 volume。

$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py

這里一個新的volume會創建到container里的 /webapp. (譯者:如果你通過ssh或者通過 -i 登陸到你的container的一個shell里, 使用 ls /webapp 可以驗證掛載成功了)

注意: 你也可以在Dockerfile里添加 VOLUME 字段,這樣在創建一個新的image的 container是就會自動的創建新的volume.

Mount a Host Directory as a Data Volume

使用 -v 不僅能創建一個新的 volume, 還可以把宿主機一個目錄mount到container里。

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

這條命令會把本地目錄 /src/webapp mount到container里的 /opt/webapp 目錄上。用這個方法來測試程序非常方便, 比如我們可以把我們的源代碼通過這個方法mount到container里, 修改本地代碼后立即就可以看到修改后的代碼是如何在container里工作的了。宿主機的目錄必須是絕對路徑, 如果這個目錄不存在docker會為你自動創建。

注意 這里是沒法用 Dockerfile實現的, 因為這樣的用法有悖于可移植性和共享. 因為本地目錄就像他名字告訴我們的, 是和本地相關的, 不一定可以在所有的宿主機上工作.(譯者: 鬼知道你在使用image的時候的host是啥樣子的)

Docker默認設置volume是可讀寫的,但是我們也可以mount一個目錄為只讀:

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

這里我們同樣mount了 /src/webapp 目錄, 但是我們加上了 ro 參數, 告訴docker這個volume是只讀的.

Creating and mounting a Data Volume Container

如果你有一些持久化的數據, 并且想在不同的container之間共享這些數據, 或者想在一些沒有持久化的container中使用, 最好的方法就是使用 Data Volumn Container, 在把數據mount到你的container里.(譯者:如開篇譯者提到的docker的container是無狀態的, 也就是說標記狀態的數據,例如:數據庫數據, 應用程序的log 等等, 是不應該放到container里的, 而是放到 Data Volume Container里, 這點和funcational programming很像, 所以我喜歡把一般的docker container 叫做 functional container用來區分 data volume container )

讓我們創建一個有名字的 Data Volume Container 來共享數據.

$ docker run -d -v /dbdata --name dbdata training/postgres

這樣做之后就可以通過 --volumes-from/dbdata mount到其他的container里了

$ docker run -d --volumes-from dbdata --name db1 training/postgres

還可以繼續共享到另外一個container里

$ docker run -d --volumes-from dbdata --name db2 training/postgres

-volumes-from 可以多次使用來 mount 多個conatainer里的多個volumes。

這個操作是鏈式的, 我們在db1 中通過 --volumes-from mount進來的 volume可以繼續被其他container使用

$ docker run -d --name db3 --volumes-from db1 training/postgres

(譯者: 這里我們不是直接使用 volume container, 而是使用db1 這個functional container 把volume 掛載到另外一個 funcational container上的,所謂的鏈式就是 dbdata -> db1 -> db3)

如果你把所有mount volumes的container都移除掉, 包括初始化的那個 dbdata container, volume才會被移除掉。通過這個屬性可以方便的升級升級數據或者在不同container間migrate數據.

Backup, restore, or migrate data volumes

Volume的另外一個用處就是備份、恢復和migrate數據。 具體的做法如下,使用 --volumes-from 來創建一個新的container mount這個volume

$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

這里我們啟動了一個新的container, 從 dbdata 掛載了一個volume。同時掛載了一個本地目錄到這個container里。最后我們通過一個 tar命令把 dbdata 里的數據備份到了 /backup 里。命令結束并且停止這個container后我們就在本地得到了一個備份的數據.

(譯者: 這里使用的 ubuntu container, 就是為了把volume中的數據打包備份到host的某一個目錄里。)

備份的數據可以恢復到這個container, 或者其他使用這個volume的container。首先創建一個container

$ sudo docker run -v /dbdata --name dbdata2 ubuntu

之后un-tar備份文件到 data volume 里

$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

你可以使用你喜歡的工具加上上面的技術來自動備份,遷移和恢復數據.

Next steps

現在我們有多學了一些如何使用docker的知識。 下面我們將看下如何把Docker和Docker Hub提供的服務結合起來實現自動build,以及學習一些私有repository的知識.

到此,相信大家對“Docker中怎么如何管理數據”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

军事| 拜泉县| 法库县| 砚山县| 新乐市| 新巴尔虎右旗| 高碑店市| 呼伦贝尔市| 昆山市| 西和县| 仁怀市| 新乐市| 仙桃市| 共和县| 原平市| 辽中县| 顺平县| 太康县| 株洲县| 巫溪县| 南阳市| 万宁市| 钟山县| 河北区| 凤庆县| 新邵县| 奈曼旗| 北辰区| 肇庆市| 齐河县| 新疆| 平遥县| 澄江县| 濉溪县| 葫芦岛市| 合阳县| 兴化市| 南开区| 蒙山县| 阿拉善盟| 新郑市|