文件共享是團隊協作的剛需,面對說停就停的網盤服務,很多同學除了心塞已經開始盤算搭建自己的網盤應用了。
ownCloud 是一個開源免費的存儲管理工具,它能幫你快速架設一套專屬的網盤服務,可以像 Dropbox 那樣實現文件跨平臺同步、共享、版本控制、團隊協作等等。
然而在VPS上搭建ownCloud是一件費時費力的工作,除此之外更需要考慮數據的可靠性、備份等工作。
本文將利用阿里云容器服務在幾分鐘內輕松搭建一個基于Docker的ownCloud專屬網盤,并使用阿里云提供的OSS(Object Storage Service,對象存儲服務)作為高可靠、低成本的云存儲后端。
創建 OSS bucket
首先你需要創建一個和容器服務處于同一區域中的bucket,這樣容器應用可以通過內網地址來訪問bucket中存儲的文件數據,提升訪問速度并節省公網帶寬
創建 OSS 數據卷
數據卷是Docker提供的容器儲存模型:可以實現容器和數據生命周期的解耦,當容器被刪除或重建之后數據依然存在;提供了可擴展的插件機制,支持不同的存儲實現。
阿里云容器服務內置了針對阿里云的數據卷驅動,支持不同類型的云存儲服務:包括NAS(文件存儲服務 NFS),OSS(對象存儲服務,OSSFS)和云盤(即將推出)。關于數據卷的詳細信息可以參閱幫助文檔
OSSFS 能把OSS bucket掛載到本地像訪問本地文件一樣操作云端存儲數據,非常適合文件存儲類型的應用。我們可以在容器服務控制臺的“數據卷”頁面,方便地為指定集群創建一個“OSS”類型的數據卷
配置如下: 數據卷名: owncloud ,也可以選擇其他值,這個需要和下文模板中引用volume保持一致
AccessKey ID和AccessKey Secret:可以從當前用戶賬號的“accesskeys”中獲得
其他參數值:輸入 -o noxattr 來提升數據卷性能
訪問域名:根據當前集群的網絡方式,選擇“內網域名”或者“VPC域名”來訪問OSS bucket。
文件緩存:選擇 打開 可以提升訪問性能
值得注意的是:OSS和NAS類型的數據卷都是全局(global)數據卷,會出現在集群中任何一個節點上。如果容器指明了重新調度配置,即使所在節點掛掉,可以自動在其他健康節點上重新恢復,而相同數據卷依然可以mount到容器指定目錄上,不會導致數據丟失。
創建編排模板
在編排模板列表頁面,創建如下編排模板
owncloud: image: owncloud:9 restart: always links: - mysql:mysql volumes: - owncloud:/owncloud labels: aliyun.routing.port_80: 'owncloud' mysql: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: changeme
注釋:
這里使用了 ownCloud的官方Docker鏡像 和 MySQL的官方Docker鏡像 。ownCloud應用容器利用容器別名 mysql 來關聯MySQL容器。 利用 aliyun.routing.port_80: 'owncloud' 標簽指明了用于訪問網盤應用的虛擬域名 利用 volumes 中的數據卷映射,把我們創建出來的OSS數據卷 owncloud 掛載到容器的 /owncloud 目錄。使用編排模板部署ownCloud應用
選擇編排模板,點擊部署應用。片刻之后,應用就會部署成功
選擇owncloud服務,并點擊訪問端點
在瀏覽器中就可以看到ownCloud的配置界面了
輸入管理員賬號和密碼之后,選擇“存儲&數據庫”進行配置。ownCloud 缺省會使用SQLite作為數據庫,并使用本地文件系統來保持數據文件。請按如下界面修改配置
注意:
數據目錄: 輸入 /owncloud/data 這里面/owncloud是OSS bucket在容器中的掛載點 配置數據庫:選擇 MySQL/MariaDB 數據庫用戶: 輸入 root 數據庫密碼: 輸入編排模板中對應數據庫ROOT密碼 數據庫名稱: 輸入 owncloud 數據庫地址: 輸入 mysql 連接MySQL數據庫容器
點擊“安裝完成”,片刻之后下面的頁面會出現
使用ownCloud應用
這時候你的專屬網盤就成功建立起來了。不但可以上傳文件,還可以為文件生成“分享鏈接”。
收到鏈接的小伙伴,就能看到你送來的滿滿的節日祝福了
ownCloud還有很多玩法,本文不再贅述。
總結
數據卷是Docker支持有狀態應用的重要機制。合理選擇不同的數據卷類型可以讓你更好地管理應用中的持久化數據。
阿里云容器服務完全兼容Docker數據卷機制,同時內置了對阿里云存儲服務的支持,無需編程就可以使用不同的存儲能力。