docker-跨主機儲存

來源:互聯網
上載者:User

標籤:net   技術   logs   vol   lib   請求   enc   restart   設定   

容器分類

從業務資料的角度看,容器可以分為兩類:無狀態(stateless)容器和有狀態(stateful)容器。

無狀態是指容器在運行過程中不需要儲存資料,每次訪問的結果不依賴上一次訪問,比如提供靜態頁面的 網頁伺服器。

有狀態是指容器需要儲存資料,而且資料會發生變化,訪問的結果依賴之前請求的處理結果,最典型的就是資料庫伺服器

volume driver

volume driver可以實現跨主機管理 data volume 方案

任何一個 data volume 都是由 driver 管理的,建立 volume 時如果不特別指定,將使用 local 類型的 driver,即從 Docker Host 的本地目錄中分配儲存空間。如果要支援跨主機的 volume,則需要使用第三方 driver

Rex-Ray driver特點
  1. cep 是開源的,而且社區活躍。
  2. 支援多種 backend,VirtualBox 的 Virtual Media、Amazon EBS、Ceph RBD、OpenStack Cinder 等。
  3. 支援多種作業系統,Ubuntu、CentOS、RHEL 和 CoreOS。
  4. 支援多種容器編排引擎,Docker Swarm、Kubernetes 和 Mesos。
  5. Rex-Ray 安裝使用方法非常簡單。
安裝配置

Rex-Ray 以 standalone 進程的方式運行在 Docker 主機上

在使用 Rex-Ray driver 的主機 docker1 和 docker2 上運行如下命令

curl -sSL https://rexray.io/install | sh

然後建立並編輯 Rex-Ray 的設定檔 /etc/rexray/config.yml

可以使用圖形化的線上 Rex-Ray 配置產生器

VirtualBox backend

在 VirtualBox 宿主機,即筆記本上啟動 vboxwebsrv 服務:
vboxwebsrv -H 0.0.0.0

執行如下命令關閉 VirtualBox 的登入認證:
VBoxManage setproperty websrvauthlibrary null

在關機狀態下修改虛擬機器 docker1 和 docker2 的 Storage 配置:

1.刪除 IDE controller。

2.設定 SATA controller 的 port 數量為最大值 30

重啟 Rex-Ray 服務:
systemctl restart rexray.service

運行 rexray volume ls 測試 Rex-Ray 是否能夠正常工作。

列表中的 volume 是當前 VirtualBox 所有的虛擬磁碟。

建立 Rex-Ray volume安裝外掛程式

從Docker 1.13開始,Docker現在支援一種新的外掛程式架構,其中外掛程式可以作為容器安裝。

$ docker plugin install rexray / ebs EBS_ACCESSKEY = access_key EBS_SECRETKEY = secret_key

建立 volume

在 docker1 或 docker2 上執行如下命令建立 volume:

rexray volume create mysql_data --size=2

使用volume啟動docker

docker run -dit --name mydb_on_docker1 --volume-driver=rexray -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysql

未建立成功放棄,改用ceph作為後端儲存

驗證volumeceph-做後端

部署文檔

1.更改rex-ray的設定檔

其中test-pool是ceph中建的pool

2.重啟rex-ray服務

rexray restart

3.建立卷

docker volume create --driver rexray --name=mysqldata --opt=size=2

4.使用卷建立容器

docker run -dit --name mydb_on_docker1 --volume-driver=rexray -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysq

5.寫資料測試

6.驗證資料一致性

刪除mydb_on_docker1

重新建立一個容器

docker run --name mydb_on_docker2 -v mysqldata:/var/lib/mysql -d mysql

新容器也使用相同的卷 mysqldata,不過這次不需要指定環境變數 MYSQL_ROOT_PASSWORD,因為密碼已經儲存到 mysqldata 裡面了。

現在 Rex-Ray volume mysqldata 已經掛載到 docker2:

① 進入到容器 mydb_on_docker2

② 登入資料庫,密碼與 mydb_on_docker1 一致。

③ 切換到資料庫 mysql

④ 確認之前由 mydb_on_docker1 建立的表和寫入的資料完好無損。

docker-跨主機儲存

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.