歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Docker 中管理數據

到目前我們介紹了一些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使用他們

開源項目Docker,Red Hat新的虛擬化選擇 http://www.linuxidc.com/Linux/2013-10/91051.htm

dockerlite: 輕量級 Linux 虛擬化 http://www.linuxidc.com/Linux/2013-07/87093.htm

Docker的搭建Gitlab CI 全過程詳解 http://www.linuxidc.com/Linux/2013-12/93537.htm

Docker 和一個正常的虛擬機有何區別? http://www.linuxidc.com/Linux/2013-12/93740.htm

在 Docker 中使用 MySQL  http://www.linuxidc.com/Linux/2014-01/95354.htm

Docker 將改變所有事情 http://www.linuxidc.com/Linux/2013-12/93998.htm

Docker 1.0 正式版發布下載 http://www.linuxidc.com/Linux/2014-06/102941.htm

添加數據卷

你可以在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.

安裝一個目錄作為數據卷

使用 -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是只讀的.

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/103608p2.htm

Copyright © Linux教程網 All Rights Reserved