More Related Content
Similar to DockerをRed Hatはどのように見ているのか (20)
More from Emma Haruka Iwao (20)
DockerをRed Hatはどのように見ているのか
- 2. わたしはだれ?
• 岩尾はるか(@Yuryu)
• 勤務先: レッドハット株式会社
– クラウドエバンジェリスト
– ストレージ(GlusterFS, Ceph)を売ってます
• 冬コミでLinux Kernel本出します
– 3日目西地区き-10b
© Red 2 Hat K.K. All Rights Reserved.
- 3. 宣伝: Linux Kernel Updates
• Dockerの基盤技術の
cgroup, namespaceのソー
スコード解説をしています
• Available on Kindle
bit.ly/lu201408
© Red 3 Hat K.K. All Rights Reserved.
- 5. © Red 5 Hat K.K. All Rights Reserved.
- 9. Linux コンテナの特徴
• Linux標準のOSレベル仮想化機能
非仮想化環境コンテナ環境
© Red 9 Hat K.K. All Rights Reserved.
- 10. Linuxコンテナの特徴(2)
• コンテナごとに独立したリソースを割り当てる
ことで、アプリケーションの実行環境を分離
– 異なるプロセスID
– 異なるファイルシステム
– 異なるネットワーク設定(仮想NIC)
– CPU、メモリ割当量を制限
• ソフトウェア仮想化と共存が可能
– クラウドの仮想マシン上でも動作
© Red 10 Hat K.K. All Rights Reserved.
- 11. DockerとLinuxコンテナ
• Dockerは、コンテナを実現する上でLinuxカー
ネルに既に存在する機能を活用
– Cgroup, namespace
– 基盤技術として実績がある
• Dockerの考え方は、”Immutable
Infrastructure”と相性が良い
– Dockerfile によるコンテナ生成(再現性)
– OSファイルごとイメージ化(環境非依存性)
© Red 11 Hat K.K. All Rights Reserved.
- 12. DockerとLinuxコンテナ(2)
アプリケーション
アプリケーション
eth0
Devicemapper NAT
eth0
ファイルシステム
/
├── bin
├── etc
├── usr
└── ...
コンテナ
イメージファイル
© Red 12 Hat K.K. All Rights Reserved.
Docker
Linuxコンテナ(プロセスグループ)
ホストOS
作成・管理
172.17.0.1
10.0.0.1
- 14. 起動、終了が非常に高速
• 新しくコンテナを起動、実行、終了させるのに
約0.2秒(Core i7 4558U 2.8GHz)
# time docker run
-t registry.access.redhat.com/rhel
/bin/true
real 0m0.234s
user 0m0.010s
sys 0m0.020s
© Red 14 Hat K.K. All Rights Reserved.
- 18. Dockerへの支持
• クラウド環境でのサポート
– Red Hat OpenShift
– Amazon Web Services
– Google Cloud Platform
• 周辺ソフトウェア
– Kubernetes
– Chef for Containers
© Red 18 Hat K.K. All Rights Reserved.
- 19. コンテナ向けLinuxの登場
• コンテナに最適化されたdistroの登場
– CoreOS
– Project Atomic
– Red Hat Enterprise Linux Atomic Host
– Ubuntu Core
• 小さなフットプリント
• 分散システム向けの機能を持つものも
– 例: etcd
© Red 19 Hat K.K. All Rights Reserved.
- 22. Continuous Delivery with Docker
コードをpush
開発者
A
開発者B
notify & build
notify & test
開発・テスト
開発者C
デプロイ
© Red 22 Hat K.K. All Rights Reserved.
- 23. Red Hat の取り組み
• RHELへの移植
• Device mapper thin-provisioning
への対応
– ディスク性能の向上
• Systemd(RHEL7のプロ
セス管理機能)との統合
• SELinuxへの対応
http://blog.docker.com/2014/06/keynote-videos-from-dockercon14/
© Red 23 Hat K.K. All Rights Reserved.
- 24. Docker in RHEL 7
• RHEL 7 の“Extras” チャンネルで利用可能
• ミッションクリティカル環境では非推奨(2014年
12月現在)
© Red 24 Hat K.K. All Rights Reserved.
- 26. RHEL Atomic Host
• コンテナホストのための最低限のOS環境
– Dockerに対応
– Systemd, SELinux 対応
– 少ないディスク、メモリ消費
– rpm-ostreeの採用
• ベータ版が利用可能[1]
[1] https://access.redhat.com/products/red-hat-enterprise-linux/atomic-host-beta
© Red 26 Hat K.K. All Rights Reserved.
- 27. rpm-ostree
• Atomic Host におけるyum の代替
• システム全体をスナップショットのように管理
• 依存関係を追跡しないので高速
• バージョンアップ、ダウンが容易
– rpm-ostree {upgrade|rollback|status|…}
© Red 27 Hat K.K. All Rights Reserved.
- 28. コンテナ向け認証
• 多数の認定ハードウェア
• 「レッドハットコンテナ認
定」プログラム
– コンテナがRHELホスト上で
動作することを認定
© Red 28 Hat K.K. All Rights Reserved.
- 32. Why Red Hat?
• 広いハードウェア互換性
• Linuxカーネル、Docker、ライブラリを含めた一
貫したサポートの提供
– Red Hat はLinuxカーネル最大の貢献者
• 多くの認定ソフトウェア
• RHEL 7とRHEL 7 Atomic Hostの2つの選択肢
© Red 32 Hat K.K. All Rights Reserved.
- 33. RED HAT
ENTERPRISE LINUX
ATOMIC HOST
Coming Soon
© Red 33 Hat K.K. All Rights Reserved.
and CentOS Atomic
- 34. まとめ
• Dockerはコンテナ技術をベースにした、アプリ
ケーション実行プラットフォーム
• レッドハットはDockerと、周辺ツールに貢献
• DevOpsの促進に役立つ
• RHEL Atomic Host はコンテナ専用RHEL
© Red 34 Hat K.K. All Rights Reserved.
- 35. © Red 35 Hat K.K. All Rights Reserved.
Editor's Notes
- 今日は「Dockerについてのお話をします。まず初めに、Dockerの概要についておはなしします。
スライドの後半にDockerのチュートリアルをご用意しています。
時間との関係上チュートリアルのご紹介は一部になりますが、後ほど実際に試される場合は、スライドがダウンロード可能ですのでご参照ください。
- Dockerは、コンテナ技術を利用したアプリケーションプラットフォームです。
大きく分けて3つの機能にわかれます。一つはコンテナを使った実行環境の管理、2つめはコンテナで利用するイメージファイルの管理機能、そして3つめがDockerと連携したWebサービスであるDocker Hubです。
下のグラフはGoogle TrendsでOpenStackと検索数を比較したものです。
急速に注目を集めていることがわかります。ここのところは、OpenStackと検索順位が逆転しています。
- コンテナをLinux KVMなどのサーバー仮想化と比較して説明します。
カーネルから見ると通常のプロセスと同じ扱いです。
そのためオーバーヘッドがほとんどなく、サーバー仮想化と比べて高速に実行することが可能です。
- Linuxコンテナの特徴として、OSの標準機能を活用していることが挙げられます。
つまり、利用するのに特別なカーネルやパッチを導入する必要がありません。
左の図が非仮想化環境、右の図がコンテナ環境を表します。
違いは、いくつかのユーザープロセスがグループ化されて独立しているのみです。
プロセスの実行環境は、非仮想化環境に非常に近く、これまでのLinuxカーネルの資産を有効活用しています。
- 具体的には、それぞれのコンテナを「プロセスグループ」として分離し、独立したリソースを割り当てることによって実現しています。
コンテナの中と外では、同じプロセスIDを持っていても異なるプロセスとして存在できますし、ファイルシステムのマウントポイントも独立しています。
また、内外でネットワークインタフェースが別に用意され、それぞれIPアドレスが割り当てられます。
それぞれのコンテナグループのCPU、メモリ割り当て量を制限することも可能です。
また、Linuxコンテナの大きな利点として、KVMを含むソフトウェアによる仮想化と共存できることが挙げられます。
これは、コンテナは仮想化とは全く独立の技術だからです。
そのため、仮想マシンで動作するクラウド環境でも、制限なくDockerを利用することが可能です。
- Cgroup, namespace という機能を使ってコンテナ同士を分離しています。
これらの機能はDockerとは無関係に、過去からKernelに存在してきました。そのため、たとえばGoogleなどでは従来から利用されており、基盤技術として実績があります。
Dockerはこの技術の上に作られています。
また近年Webサービスで提案されている “Immutable Infrastructure” という考え方と非常に親和性が高いものになっています。
Dockerのコンテナイメージファイルは、Dockerfileというファイル形式に記述を行うことによって自動的に生成されます。
また、ライブラリや設定ファイルも含めたOS環境ごとイメージファイル化しますので、環境ごとコンテナとして動作させることが可能です。そのため、環境依存の問題が非常に起こりづらくなっています。
- こちらのイラストはDockerとコンテナの関係を図示したものです。
Dockerコンテナは、Linux上ではプロセスグループとして存在します。その中に、専用のファイルシステムツリーと、アプリケーションプロセスが所属します。
コンテナには専用のネットワークインタフェースも用意されます。
ファイルしてステムは、devicemapperを経由して現実のコンテナイメージファイルと対応付けされます。
また、ネットワークインタフェースはNATを経由してホストOSのインタフェースと関連づけされ、それぞれ独立のIPアドレスを持ちます。
Dockerはこれらを作成、管理します。
- DockerはGitHubで開発されています。 dotcloud/docker というレポジトリが本体です。このほかにいくつかの周辺ライブラリが、dotcloud レポジトリの下に存在します。
DockerはGitHub上では最も盛んに開発が行われているプロジェクトの一つで、スターが13000→17000を超え、forkの数も2300→3500ほどあります。
開発者の数はおよそ700人となっています。この半年で200人増えました。
- 今月の9日10日と、アメリカのサンフランシスコにてDockerConというDocker専門のカンファレンスが、2日間に渡って開催されました。
Red Hatもプラチナスポンサーとして参加し、基調講演も行いました。
IBM, Google, Rackspace, Facebook などの大手企業が講演を行い、Dockerの事例やアイデアを共有しました。USでも非常に盛り上がっているといえます。
- そのカンファレンスでの、Docker社CTOのSolomon Hykesによって行われた基調講演で、このスライドが登場しました。
Dockerの価値は、技術ではなく、人々が何かを同意するのを容易にしたというメッセージです。
Dockerがベースになっているコンテナ技術は、古くから存在し、Dockerは何も新しいことを実現していないとよく言われます。
そこで、技術が新しいのではなく、使いやすく整備し、多数の人間が同じ基盤でコラボレーションできる環境を作り上げた、というのがDockerの価値だと強調していました。
- Dockerへの支持は急速に広がっています。
Amazon Web Services や Google Cloud Platform では、Dockerイメージをそのまま動作させるようにサポートされています。
またTwitter, eBay, Groupon といった大手Webサービスで、プロダクション環境への応用が始まっています。
JIRAなどのツールで有名なAtlassianは、アプリケーションをDockerコンテナの形で配布することにより、インストールを非常に簡単にしています。
- 続いてRed Hatの取り組みをご紹介します。
Red Hat は、Dockerの開発に貢献しています。
まず、Ubuntu上で開発されていたDockerを、RHELへ移植を行いました。また、イメージファイルの管理にAUFSという技術が従来使われていたのですが、device mapper thin provisioning という機能で再実装しました。これにより、ディスク性能が向上しています。
また、RHEL7で導入されたプロセス管理機能であるsystemdへの対応を行いました。
さらに、SELinuxへの対応を行い、SELinuxが有効の状態でもDockerが動作するようになりました。
この右のスライドは、DockerConの基調講演でRed Hatの取り組みが紹介されたスライドです。
- RHEL7では、Dockerが利用可能になりました。
現在のところ、 “Extra”チャネルという別のyumレポジトリにより提供されています。
プロダクション環境では非推奨ですが、まずはお試しいただけるようになっています。
- Red Hat では RHEL Atomic Host というプロジェクトに取り組んでいます。
これはDockerコンテナを実行するための最低限のOS環境となっています。
Dockerのほかに、Linux KVMを実行させることもできます。
つまり、Linux上で直接アプリケーションを実行するのではなく、原則コンテナ内で実行させようという動きのひとつです。
upstreamのオープンソースプロジェクトとして、Project Atomicというものが存在しています。RHELでのFedoraに相当します。
この Atomic Host は現在リリースは計画中で、まだ利用することはできません。
- ライブラリ、OSの実行ランタイムに価値がある