Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Docker volume基礎/Project Longhorn紹介

2,113 views

Published on

Rancher Meetup Tokyo #8 の発表資料です
https://rancherjp.connpass.com/event/59842/

Published in: Software

Docker volume基礎/Project Longhorn紹介

  1. 1. 1 Docker Volume 基礎 Project Longhorn 紹介 Engineer / Technology Evangelist, SAKURA Internet, Inc. @zembutsu 前佛 雅人 ZEMBUTSU Masahito 2017年6月28日(水) Rancher Meetup Tokyo #8
  2. 2. 2 もしも Rancher-NFS が なかったら?
  3. 3. 3 分散環境でボリューム管理 ボリューム?
  4. 4. 4 Docker Volume
  5. 5. 5 データの扱い コンテナA専用 ファイル階層 File System … / /bin /etc /var コンテナB専用 ファイル階層 File System … / /bin /etc /var
  6. 6. 6 データの扱い コンテナA専用 ファイル階層 File System … / /bin /etc /var コンテナB専用 ファイル階層 File System … / /bin /etc /var hello.txt ×
  7. 7. 7 データの扱い コンテナA専用 ファイル階層 File System … / /bin /etc /var コンテナB専用 ファイル階層 File System … / /bin /etc /var hello.txt × HOST Root File System /var/lib/docker/overlay/ hello.txt ディレクトリはストレージドライバによって異なる A BUFS( Union File System )
  8. 8. 8 Docker Volume
  9. 9. 9 データ・ボリューム コンテナA専用 ファイル階層 File System … / /bin /etc /var コンテナからはUFSを通してデータ領域が見える ストレージ・ドライバのオーバヘッドを受けない 複数のコンテナでボリュームを共有できる volume /data / ボリューム Volume /var/lib/docker/volumes/HOST Root File System
  10. 10. 10 コンテナ ファイル階層 File System / UFS ( Union File System)… / /bin /var Docker イメージ Docker Image /var/lib/docker/image/ volume / ボリューム Volume /data コンテナ用 イメージ層 Container’s Image Layer / /var/lib/docker/volumes//var/lib/docker/containers/ ReadOnly
  11. 11. 11 ボリュームは3分類 ホストをマウント 名前付き ホスト上のディレクトリ /docker/data /data 名前無し volume ボリュームの実体は、ホスト上のディレクトリ /var/lib/docker/volumes ボリュームはコンテナ間でデータを共有できる volume /data /data /etc
  12. 12. しかし分散環境では?
  13. 13. 13 volume volume volume 分散環境においてボリュームを共有する手段を Docker Engine は提供しない(swarm modeでさえ)
  14. 14. 14 swarm mode ≠ Docker Swarm 192.168.10.1 192.168.10.11 192.168.10.12 public IP address public IP address public IP addresseth0 eth1 docker swarm init ¥ --advertise-addr=eth0 ¥ --data-path-addr=192.168.10.1 docker swarm join ¥ --token <TOKEN> ¥ <public_IP>:2377 Manager Workerfirewall-cmd --add-port=2377/tcp --permanent firewall-cmd --add-port=7946/tcp --permanent firewall-cmd --add-port=7946/udp --permanent firewall-cmd --add-port=4789/udp --permanent firewall-cmd --reload
  15. 15. 15 docker service create -p 80:80 ¥ --replicas 2 ¥ --name=web ¥ --constraint 'node.role != manager' ¥ zembutsu/docker-sample-nginx
  16. 16. 16 NFS Server nfs client nfs client CentOS 7.3 (NFSv4 TCP) 192.168.10.1 192.168.10.11 192.168.10.12eth1 yum install rpcbind nfs-utils # for NFS Server systemctl enable nfs-server systemctl start nfs mkdir /volumes; chown nfsnobody.nfsnobody /volumes echo ‘/volumes 192.168.10.0/24(rw,async) 127.0.0.1(rw)’ >> /etc/exports exportfs -a yum install nfs-utils # for NFS clients mkdir /sharevolume echo ‘192.168.10.1:/volumes /sharevolume nfs defaults 0 0’ >> /etc/fstab mount /sharevolume
  17. 17. 17 volume volume NFS Server nfs client nfs client docker service create -p 80:80 ¥ --replicas 2 ¥ --name=web ¥ --constraint 'node.role != manager' ¥ --mount type=bind,source=/volumes/docroot/,destination=/usr/share/nginx/html/,bind-propagation=shared ¥ zembutsu/docker-sample-nginx
  18. 18. 19 • スケールする環境では、コンテナだけでなく、分散ブロッ ク・ストレージ・システムも管理が複雑化  簡単にしたい • ストレージ・コントローラとデータ(ボリューム)を分離 • 2017年4月発表・目下開発中・オープンソース https://github.com/rancher/longhorn
  19. 19. 20 • ローカルディスク、ネットワークストレージ機能 • コンテナと仮想マシン用のブロック・ストレージ・ボリュームを 作成 • ボリュームごとに専用のストレージ・コントローラを作成 • ストレージ・コントローラのレプリカを作成 • ボリューム毎に複数のフロントエンドを割り当て(iSCSI ター ゲット) • スナップショットの作成と定期的なバックアップ処理
  20. 20. 21Introducing Project Longhorn - April 2016 Rancher Online Meetup https://www.slideshare.net/ShannonWilliams14/introducing-project-longhorn-april-2016-rancher-online-meetup
  21. 21. 22
  22. 22. 23 • 現時点では Ubuntu Server 16.04 をサポート $ sudo apt-get update $ sudo apt-get install open-iscsi $ git clone https://github.com/rancher/longhorn $ cd longhorn/deploy $ sudo ./longhorn-setup-single-node-env.sh (ry 1ec968b7fb266c10ee4692ec0ae1321de73c7b87f5c4822c3874148c13925265 longhorn-ui is ready Longhorn is up at port 8080
  23. 23. demo
  24. 24. 25
  25. 25. まとめ
  26. 26. 27 ボリュームを通してコンテナはデータを共有する ホストをマウント 名前付き ホスト上のディレクトリ /docker/data /data 名前無し volume ボリュームの実体は、ホスト上のディレクトリ /var/lib/docker/volumes ボリュームはコンテナ間でデータを共有できる volume /data /data /etc
  27. 27. 何か気になる所がありますか? ご参考:Docker 日本語ドキュメント http://docs.docker.jp/ http://slideshare.net/zembutsu twitter: @zembutsu

×