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 on RHEL & Project Atomic 入門 - #Dockerjp 4

33,428 views

Published on

Red Hat Enterprise Linux 7 上でのDockerのステータス、使い方の解説と、Project Atomicをはじめとして、CentOS Atomic Host, RHEL Atomic Hostの解説。CentOS Atomic HostでKubernetesを使うチュートリアル。

Published in: Engineering

Docker on RHEL & Project Atomic 入門 - #Dockerjp 4

  1. 1. Docker on RHEL & ! Project Atomic 入門 Haruka Iwao Docker Meetup #4 2015/01/17
  2. 2. おことわり •  正確な情報を提供するように努めていま すが、無保証です。 •  必ずしも会社の公式見解ではありません •  製品の正確な情報が必要な場合は、レッ ドハットにお問い合わせください
  3. 3. わたしはだれ? •  岩尾 はるか (@Yuryu) •  レッドハットで働いています – ストレージソリューションアーキテクト兼ク ラウドエヴァンジェリスト(何でもやる) •  Final Fantasy XIV プレイヤー – Carbuncle サーバー、学メイン – バハ真成編4層をクリアしました •  Ingress 緑エージェント(A11)
  4. 4. Linuxカーネル本(宣伝) •  Linux Kernel Updates” •  最新刊 – OOM Killer特集 – ジュンク堂池袋店で買 えます! •  既刊 – Docker, TCP/IP特集など – Kindle版売ってます
  5. 5. あらすじ •  Red HatとDocker •  Project Atomic •  Try CentOS Atomic Host •  デモ
  6. 6. Red HatとDocker
  7. 7. その前に
  8. 8. Fedora, RHEL, CentOS •  代表的な3種類の「Red Hat系」Linuxディ ストリビューション
  9. 9. Fedora, RHEL, CentOS比較 Fedora Red Hat Enterprise Linux CentOS 開発主体 Fedora Project Red Hat CentOS Project リリース間隔 およそ半年 3年∼3.5年 RHELに準ずる メンテナンス期 間 およそ1年 10年+延長3年 10年 特徴 新機能をどんど ん実装していく Fedoraをもとに、 より堅牢、安定 化 RHELのソース を元に、商標を 取り除き再ビル ド 価格 無償 有償 無償 サポート なし あり なし
  10. 10. リリース間隔イメージ =1年ちょっと
  11. 11. RHELとCentOSの関係 •  ソースコードレベルでは、商標の変更を 除いてほぼ同じ •  機能は同じ。バグも同じ。 •  リリースは基本的にRHELが先 – 数週間程度ずれる •  今日はRHELといいますが、おうちで試す ときはCentOSでも同じです – サポートが必要な場面ではRHELを買ってね!
  12. 12. Red HatとDocker
  13. 13. Red Hatの取り組み •  RHELへの移植 •  Device mapper thin-provisioning への対応 – ディスク性能の向上 •  Systemd 統合 •  SELinux 対応 •  DockerConスポンサー •  Kubernetes開発に参加 http://blog.docker.com/2014/06/keynote-videos-from-dockercon14/
  14. 14. Docker on RHEL •  Red Hat Enterprise Linux 7ではDockerが 正式サポート – 「Extras」チャンネルでの提供 – ミッションクリティカル非推奨
  15. 15. Extrasチャンネルとは •  通常のRHELのパッケージは、一つのメ ジャーバージョンの中ではrebaseしない – 例えばRHEL7の間、Apacheのバージョンは 2.4.6のまま – 新機能やバグ修正は都度マージ&テスト •  Extrasはrebaseします – 常に最新版を使っていただく状態を想定 – リリース間隔も短い https://access.redhat.com/support/policy/updates/extras
  16. 16. ミッションクリティカル非推奨 •  頻繁にrebase、リリースされるので、す ごく重要な場所には使わないでね •  サポートが限定的 – Severity 3 (Medium)が最大になります – 24/365 応答しません •  個別にはご相談ください •  RHEL 7.1からこの制限は無くなる予定 https://access.redhat.com/solutions/907283
  17. 17. コンテナの互換性 •  技術的な観点ではなく、サポートの可否 •  ホストとコンテナともにx86_64のみ コンテナ ホスト サポート可否 RHEL 5以前 RHEL 7 × RHEL 6 RHEL 7 ○ RHEL 7 RHEL 7 ○ RHEL 以外 (CentOS, Ubuntu, etc…) RHEL 7 × RHEL RHEL 以外 ×
  18. 18. 続・コンテナの互換性 •  カーネルを載せ替えて、本当に大丈夫? •  /proc や /sys に依存するアプリケーション は、正しく動かないことも •  システムコールの微妙な変更がアプリを 壊すことも – 例: A kernel change breaks GlusterFS – https://lwn.net/Articles/544298/   •  RHELでは互換性を担保、サポート
  19. 19. Getting Started with Docker •  RHEL 7でDockerを動かすチュートリアル •  https://access.redhat.com/articles/881893   •  CentOS 7でも基本的には同じ – チャンネルは無いので、単に yum install docker でインストールできる – firewalld を disable & stop するのを忘れずに
  20. 20. Project Atomic
  21. 21. Project Atomic とは •  Atomic Host を作っているプロジェクト •  小さなOS+コンテナのためのツールを セットで提供 •  コンテナのためのプラットフォーム
  22. 22. Project Atomic ベースのOS •  Fedora Atomic – Fedora と同じように、新機能開発のベース •  Red Hat Enterprise Linux Atomic Host – 商用版でサポート付きの安定版 – 現在ベータ版提供中 •  CentOS Atomic Host – CentOSをベースにAtomic Hostの機能を追加 – RHEL Atomic Hostとは独自に開発(今のとこ)
  23. 23. Ubuntu Coreとの違い •  Ubuntu Core – コンテナイメージを作るための最低限のOS – tarで提供され、Dockerにインポートして使う – ホストOSでは無い •  Atomic Host – コンテナを実行するためのホストOS – 仮想マシンイメージで提供される – コンテナ内OSでは無い
  24. 24. Ubuntu Coreとの違い •  Ubuntu Core – コンテナイメージを作るための最低限のOS – tarで提供され、Dockerにインポートして使う – ホストOSでは無い •  Atomic Host – コンテナを実行するためのホストOS – 仮想マシンイメージで提供される – コンテナ内OSでは無い 初出時にSnappy Ubuntu Coreを見落として書いて ありました。Ubuntu Coreはコンテナ用の最低限 のディスクイメージ、Snappy Ubuntu Coreは非常 に小さな最低限のUbuntuです。ただし、Dockerも 標準では付属せず、Dockerに限定しないものに なっています。2015/01/17現在のalphaは、ディス クイメージ109MB、メモリ消費量41MB、duで取 れるファイルシステム容量297MBでした。お詫び して訂正します。
  25. 25. CoreOSとの違い •  非常によく似ているライバル •  標準ツール – CoreOS: etcd, fleet – Atomic Host: etcd, kubernetes •  思想が少し違う – CoreOS: 一からコンテナのために出発 – Atomic Host: 既存OSをコンテナに最適化 •  どっち使えばいいの?→Atomic Host好み
  26. 26. RHELとAtomic Hostの違い •  yum が無い •  OS自体はrpm-ostree でupgrade/rollback •  Docker, etcd, Kubernetesが標準で入る •  ファイルシステムが大部分読み込み専用 •  リリースサイクル、サブスクリプション の詳細などは少しお待ちを…!
  27. 27. リソース消費量を比べてみた メモリ ディスク(du /) 配布イメージ CoreOS 46MB 329MB 112MB (PXE gz) RHEL 7 Atomic Host Beta (※) 195MB 1.1GB 416MB (qcow2 gz) CentOS 7 Atomic Host 144MB 1.2GB 271MB (qcow2 xz) CentOS 7 (※) 194MB 1.2GB 3.9GB (iso) boot2docker 152MB 113MB 23MB(iso) ホスト: VirtualBox 4.3.20, VMware Fusion 7.1.0(※) それぞれ起動直後でDockerを動かした状態 実測値です。環境によって変わります。
  28. 28. Try CentOS Atomic Host
  29. 29. CentOS Atomic Host •  CentOS をベースに Project Atomic の成果 を追加 •  標準で Docker, Kubernetes, Cockpit, Etcd , cloud-initが入っている •  スナップショットが利用可能
  30. 30. CentOS Atomic の入手先 •  http://buildlogs.centos.org/ rolling/7/isos/x86_64/   •  定期的にビルドされるスナップショット が入手可能 •  qcow2 イメージ – KVMで使うか、変換して使う
  31. 31. イメージのセットアップ •  cloud-init が動くようになっているので、 メタデータ、設定を用意 •  今回はisoで読ませる方法を解説
  32. 32. 用意するファイル cloud-­‐config     password:  changeme   ssh_pwauth:  True   chpasswd:  {  expire:  False  }     ssh_authorized_keys:      -­‐  ssh-­‐rsa  ...  foo@foo.com  (insert  ~/.ssh/id_rsa.pub  here)   meta-­‐data     instance-­‐id:  iid-­‐atomic01;   local-­‐hostname:  centos-­‐atomic;
  33. 33. ファイルをisoにする $  genisoimage  -­‐output  init.iso          -­‐volid  cidata  –joliet          -­‐rock  user-­‐data  meta-­‐data init.isoをマウントすると 起動時にcloud-initが読み込む
  34. 34. ちょっと面倒と思った?
  35. 35. Vagrant Boxを作りました
  36. 36. Vagrant で CentOS Atomic $  vagrant  init  yuryu/centos-­‐atomic   $  vagrant  up •  公式ではありません •  VirtualBox Additions は入っていません •  20141129版のqcow2をもとに作成 •  id: centos, password: vagrant 注意
  37. 37. CentOS AtomicでKubernetes •  標準で入っているので使ってみよう •  Docker内にFedoraとApacheのイメージを 入れて、起動させてみる •  Minion, pod 1つの最小構成 •  参考資料: Testing Kubernetes with an Atomic Host http://www.projectatomic.io/blog/ 2014/11/testing-­‐kubernetes-­‐with-­‐an-­‐atomic-­‐host/  
  38. 38. 前準備(バグ対応) #  cp  /usr/lib/systemd/system/kubelet.service              /etc/systemd/system/   #  sed  -­‐i  s/docker.socket/docker.service/              /etc/systemd/system/kubelet.service   #  systemctl  daemon-­‐reload   現在のスナップショットにはバグがあって、対応が必要。
  39. 39. デーモン起動&確認 #  for  SERVICES  in  etcd  kube-­‐apiserver        kube-­‐controller-­‐manager  kube-­‐scheduler        docker  kube-­‐proxy.service  kubelet.service;  do                    systemctl  restart  $SERVICES                  systemctl  enable  $SERVICES                  systemctl  status  $SERVICES          done     #  kubectl  get  minions   NAME                                LABELS   127.0.0.1                      <none>出力:
  40. 40. Apacheを起動してみる #  curl  -­‐Lo  apache.json            http://bit.ly/1ub4I0c   #  kubectl  create  -­‐f  apache.json       状態確認 #  kubectl  get  pod  fedoraapache     出力: NAME                                IMAGE(S)                        HOST                                LABELS                            STATUS   fedoraapache                fedora/apache              127.0.0.1/                    name=fedoraapache      Running  
  41. 41. ログの確認 Masterのログ   #  journalctl  -­‐f  -­‐l  -­‐xn  -­‐u  kube-­‐apiserver          -­‐u  etcd  -­‐u  kube-­‐scheduler     Minionのログ   #  journalctl  -­‐f  -­‐l  -­‐xn  -­‐u  kubelet          -­‐u  kube-­‐proxy  -­‐u  docker
  42. 42. 動作確認と終了 動作確認 #  curl  http://localhost     結果:     終了 #  kubectl  delete  pod  fedoraapache   Apache
  43. 43. デモ
  44. 44. まとめ •  Atomic Host = コンテナ向けOS – Docker, Kubernetes, Etcd などを標準搭載 – 従来のOSから出発して改良 •  RHEL 7ではDockerをサポート •  RHEL Atomic Host と CentOS Atomic Host は別プロジェクト •  Atomic Host は簡単に試せる
  45. 45. Thank you!

×