Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Docker volume基礎/Project Longhorn紹介

2.807 visualizaciones

Publicado el

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

Publicado en: Software
  • Inicia sesión para ver los comentarios

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

×