GeezerVison is showing ja.wikipedia.org — Container Linux - Wikipedia
Container Linux (旧称:CoreOS Linux )は、 Linuxカーネル をベースにしたオープンソース の軽量オペレーティングシステム である。クラスター 向けのデプロイにインフラストラクチャを提供するために開発された。現在は開発が終了している。自動化、アプリケーションのデプロイの容易さ、セキュリティ、信頼性、スケーラビリティ に重点を置いて設計されている。オペレーティングシステムとしてContainer Linuxは、ソフトウェアコンテナ 内のアプリケーションのデプロイに必要な最小限の機能のみを提供するが、同時に、サービスディスカバリ や設定を共有するための機能を内蔵している[ 9] [ 10] [ 11] [ 12] 。
現地時間2018年1月30日、レッドハット がCoreOS, Inc.を買収する最終合意を締結したと発表[ 13] 。それに伴い、Container LinuxはFedora Atomic Hostに統合され、Fedora CoreOSとなった[ 14] 。Container Linuxについては現地時間2020年5月26日にEOLを迎えた旨のアナウンスがされており、同2020年9月1日以降関連リソースは削除または読み取り専用となっている[ 1] 。記事中でFedora CoreOSが公式の後継であるとされている。
Container Linuxは、Gentoo Linux [ 15] [ 16] 、ChromeOS 、Chromium OS と共通のSDK を利用しており、これらのオペレーティングシステムとソフトウェアの基盤を共有している。さらに、この共通基盤に新しい機能とカスタマイズを加えることで、サーバー向けのハードウェアやユースケースをサポートしている[ 11] [ 17] :7:02 。2015-01-01、CoreOSは主にAlex Polvi、Brandon Philips、Michael Marineauによって積極的に開発されており、主要機能は安定版リリース として利用できる[ 18] [ 19] [ 20] 。
概要
Container Linuxは、ペイロードとなるアプリケーションを配布する方法としてパッケージマネージャー を提供せず、その代わりに、すべてのアプリケーションをコンテナー内で実行する必要がある。一つの制御ホストとして機能するContainer Linuxインスタンスは、そのベースとしてLinuxカーネルのOSレベルの仮想化 の機能を使用することで、隔離されたLinux システムとして動作 する複数のコンテナを作成・設定する。このようにして、Container Linuxでは、ハイパーバイザー や本格的な仮想マシン を提供するのではなく、複数の隔離されたユーザー空間 のインスタンスを用いることにより、コンテナ間のリソース のパーティション分割を実現している。このアプローチはLinuxカーネルのcgroups およびnamespaces の機能に依存しており[ 21] [ 22] 、これらの機能は、ユーザー空間のプロセス に対して、リソース使用量(CPU 、メモリ、ディスクI/O など)を制限、集計、隔離する機能を提供している[ 10] [ 12] [ 23] 。
当初、Container Linuxは、Docker のみをコンポーネントとして使用して、抽象化とインターフェイス の追加レイヤをLinuxカーネルのOSレベルの仮想化機能に提供し[ 24] 、異なる環境上でアプリケーションを実行可能にするコンテナ向けの標準化フォーマットを提供していた[ 10] [ 23] 。2014年12月、CoreOSは、rkt (当初はRocket という名前だった)を公開し、サポートを開始した。これは、アプリケーションコンテナイメージの別の標準フォーマットであり、関連するコンテナのランタイム環境 の定義、コンテナイメージの検索と取得のためのプロトコル として、Dockerの代替となるものである[ 25] [ 26] [ 27] [ 28] 。CoreOSは、アプリケーションコンテナイメージ (application container image、ACI)に必要とされる属性を説明する、いわゆるアプリコンテナ (app container、appc)の仕様を定める実装としてrktを提供している。2015年6月、CoreOSは、appcとACIを独立した委員会の主導で定める仕様として提供し[ 29] [ 30] 、特定のベンダー・OSに依存しないコンテナ化標準のイニシアティブのOpen Container Initiative (OCI、当初はOpen Container Project またはOCPと呼ばれていた[ 31] )の一部とすることを発表した[ 32] [ 33] [ 34] 。
Container Linuxは、Gentoo Linuxのebuild スクリプトを使用してシステムコンポーネントの自動コンパイル を行い[ 15] [ 16] 、 systemd をメインのinit システムとして使用し、systemdと各種Container Linuxの内部メカニズムを密接に統合してさせている[ 10] [ 35] 。
アップデートの配布
Container Linuxは、FastPatch と呼ばれるデュアルパーティションの枠組みを活用することにより、OSのアップデート 時にも追加のセキュリティと信頼性を実現している。FastPatchでは、アップデートはシステム全体に対して実行され、初めにパッシブなセカンダリーのブートパーティション にインストールされ、再起動またはkexec の実行時に有効化されるようになっている。このアプローチにより、OSの特定の一部分のみがアップデートされることにより起こりうる問題を回避することができ、OSの安定であることが分かっているバージョンに簡単にロールバックできることが保証され、追加のセキュリティのためにブートパーティションごとに署名 を行うことができるようになる[ 10] [ 12] [ 36] 。ルートパーティションとルートファイルシステム は自動的に利用可能なディスクサイズまでサイズ変更される。ルートパーティションは読み書き可能なストレージ空間を提供するが、OS自体は/usr に読み込み専用でマウント される[ 37] [ 38] [ 39] 。
アップデート適用時に一度にクラスタ の一部のみが再起動することを保証し、デプロイされた実行中のアプリケーションがリソースを要求するのを防ぐために、CoreOSはContainer Linux向けにlocksmith と呼ばれる再起動 マネージャを提供している[ 40] 。locksmithを利用すると、アップデートの最終ステップで再起動する際に、異なるアップデート戦略の中から1つを選ぶことができる。たとえば、同時に再起動できるクラスタのメンバー数を指定できる。内部では、locksmithはクラスタのメンバー上でlocksmithd デーモン を起動しており、locksmithctl コマンドライン ユーティリティマネージャでパラメータを設定できる[ 41] [ 42] 。LocksmithはGo言語 で書かれており、Apache License 2.0 ライセンスで配布されている[ 43] 。
で使用しているディストリビューションシステムのアップデートは、Google のオープンスースOmaha プロジェクトをベースとしている。Omahaは、ローリングアップデートのメカニズムを提供しており、XML がベースのリクエスト・レスポンス プロトコルがベースになっている[ 6] [ 44] [ 45] 。また、CoreOSは、クラスタ全体のアップデートを管理するためのCoreUpdate というウェブベースのデジタルダッシュボード も提供している。CoreUpdateで利用可能な操作には、カスタムのアップデートポリシーを共有する異なるグループにユーザーを所属させる機能や、クラスタ全体のContainer Linuxのバージョンを確認する機能、アップデートの停止と再開、アップデートログの記録の確認機能などがある。CoreUpdateはHTTP ベースのAPI も提供しており、サードパーティのユーティリティやデプロイシステム と統合することができる[ 36] [ 46] [ 47] 。
クラスタ・インフラストラクチャ
CoreOSのクラスターアーキテクチャの概要図[ 48]
Container Linuxは、クラスタ内のすべてのコンピュータ上で動作し、動的な設定レジストリとして、etcdを提供している。これにより、様々な設定データを簡単かつ信頼性の高い方法でクラスタメンバー間で共有できる[ 6] [ 37] 。
etcd に保存されたキーバリューデータ は、Raft アルゴリズムを用いて自動的なマスター選出 とコンセンサス が確立され、自動的に分散 、複製 が行われるため、保存されたデータのすべての変更がクラスタ全体に反映されるとともに、1つのクラスタメンバーが障害で失われても、データの損失が生じない冗長性 が実現されている[ 28] [ 49] 。設定の管理に加えて、etcd は自身と自身が提供するサービスを通知することにより、サービスディスカバリ の機能も提供している。etcd との通信は、公開されたREST ベースのAPIにより行われ、内部ではHTTPプロトコル上のJSON が使用されている。APIは直接使用することもできるし(たとえば、curl やwget を使用して)、CoreOSが提供する専用のコマンドラインユーティリティのetcdctl 経由で間接的に利用することもできる[ 10] [ 12] [ 50] [ 51] [ 52] 。etcd はKubernetes のソフトウェアとしても利用されている。
Container Linuxは、2017年まで、fleet と呼ばれるクラスタマネージャも提供しており、Container Linuxの別のsystemdインスタンスをクラスタレベルで管理することができた。しかし、2017年2月7日、Kubernetes がクラスタマネージャのデファクトスタンダードとなっていることから、1年後の2018年2月1日にfleetを廃止することが発表された[ 53] 。fleetd を使用すると、Container Linuxは別々のsystemdインスタンスを結びつけて分散化されたinit system を構築することができ、クラスタ全体にetcd をデプロイできる[ 49] 。内部では、fleetd デーモンがローカルのsystemd インスタンスとD-Bus 経由で通信しており、etcd のデプロイはsystemdの公開APIで行われる。fleetd により、1つまたは複数のコンテナ をクラスタ全体にデプロイすることが可能になり、さらに冗長化 、フェイルオーバー 、特定のクラスタメンバーへのデプロイ、コンテナ間の依存関係の定義、コンテナのグループ化デプロイなどの発展的なオプションが利用できる。fleetctl と呼ばれるコマンドラインユーティリティを用いて、この分散initシステムを設定・監視することができる[ 54] 。内部では、fleetd デーモンとの間でHTTP上のJSONベースのAPIを用いて通信を行っており、このAPIは直接利用することもできる。クラスタメンバーのローカルで使用した場合は、fleetctl はローカルのfleetd インスタンスとUnixドメインソケット で通信し、外部のホストからはSSH の公開鍵で認証されたSSHトンネリング が使われる[ 55] [ 56] [ 57] [ 58] [ 59] 。
これらすべてのデーモンとコマンドラインユーティリティ(etcd 、etcdctl 、fleetd 、fleetctl )は、Go言語 で書かれており、Apache License 2.0 ライセンスで配布されている[ 60] 。
派生
2018年1月、CoreOS, Inc.はレッドハット に買収され[ 70] 、その後、レッドハットはCoreOSのContainer Linuxを同社のProject Atomicと統合し、新しいOSであるRed Hat CoreOSを開発することを発表した[ 71] 。Project Atomicには、Fedora ProjectのFedora CoreOS に関係するオープンソースコミュニティがあり、双方の技術を取り込んでいる。
2018年3月6日、Kinvolk GmbHはCoreOS Container Linuxの派生OSとして、Flatcar Linux を発表した[ 72] 。Flatcar Linuxは、アップストリームのCoreOS alpha/beta/stableチャンネルのリリースを追跡しており、2019年5月には、実験的なEdgeリリースチャンネルが追加された[ 73] 。
評価
2014年、LWN.netはCoreOSを以下のように評価している[ 74] 。
大規模な分散システム—主な例としてはウェブアプリケーション—を統合しようとしている人にとっては、CoreOSは興味深い機能を多数備えているように見えるだろう。これらの機能により、この種のアプリケーションで必要な需要に応じたスケールの拡大や縮小が可能になり、アップグレードが頭痛の種にならないような安定したプラットフォームを提供できるようになるはずだ。「大規模なサーバーのデプロイ」にとって、CoreOSや同じような特徴を持つOSは、未来を先取りしているように思える。
脚注
1 2 “End-of-life announcement for CoreOS Container Linux ” (英語). coreos.com . 2020年8月16日閲覧。
↑ “coreos/manifest: Release v94.0.0 (Container Linux v94.0.0) ”. github.com (2013年10月3日). 2014年9月22日閲覧。
↑ “CoreOS Container Linux Release Notes # Stable channel ”. coreos.com (2020年5月22日). 2020年11月11日時点のオリジナル よりアーカイブ。2020年5月22日閲覧。
↑ “CoreOS Container Linux Release Notes # Beta channel ”. coreos.com (2020年5月22日). 2020年11月11日時点のオリジナル よりアーカイブ。2020年5月22日閲覧。
↑ “CoreOS Container Linux Release Notes # Alpha channel ”. coreos.com (2020年5月22日). 2020年11月11日時点のオリジナル よりアーカイブ。2020年5月22日閲覧。
1 2 3 4 Timothy Prickett Morgan (2015年2月15日). “CoreOS Hyperscales Linux By Making It Invisible ”. nextplatform.com . 2015年6月14日閲覧。
↑ “CoreOS Pilot Agreement ”. coreos.com (2014年3月13日). 2014年9月12日時点のオリジナル よりアーカイブ。2014年3月26日閲覧。
↑ “coreos/etcd: etcd/LICENSE at master ”. github.com (2013年7月31日). 2014年3月26日閲覧。
↑ “CoreOS Linux is now Container Linux ”. coreos.com . 2016年12月20日閲覧。
1 2 3 4 5 6 Libby Clark (2013年9月9日). “Brandon Philips: How the CoreOS Linux Distro Uses Cgroups ”. Linux.com . 2014年2月13日閲覧。
1 2 “CoreOS – a new approach to Linux-based server systems ”. itnews2day.com (2013年8月22日). 2014年3月26日閲覧。
1 2 3 4 5 “CoreOS documentation: Using CoreOS ”. coreos.com . 2014年2月13日閲覧。
↑ “Red Hat、CoreOSを買収、Kubernetesとコンテナ技術における リーダーシップを拡大 ”. redhat.com (2018年2月15日). 2021年1月17日閲覧。
↑ “Fedora CoreOS Documentation :: Fedora Docs ”. fedoraproject.org (2021年1月17日). 2021年1月17日閲覧。
1 2 “Building development images: Updating portage-stable ebuilds from Gentoo ”. coreos.com . 2016年5月24日閲覧。
1 2 “Distributions based on Gentoo ”. gentoo.org (2016年3月25日). 2016年5月24日閲覧。
↑ Brian Harrington (2014年7月8日). “CoreOS: Anatomy of a CoreOS update ”. youtube.com . Rackspace. 2014年7月25日閲覧。
↑ Alex Polvi (2014年7月25日). “CoreOS Stable Release ”. coreos.com . 2014年8月28日閲覧。
↑ “CoreOS Release Notes ”. coreos.com . 2014年8月28日閲覧。
↑ Brandon Philips (2015年1月28日). “etcd 2.0 Release – First Major Stable Release ”. coreos.com . 2015年6月14日閲覧。
↑ Jonathan Corbet (2007年10月29日). “Notes from a container ”. LWN.net . 2016年7月3日閲覧。
↑ Jake Edge (2014年11月19日). “Control group namespaces ”. LWN.net . 2016年7月3日閲覧。
1 2 “CoreOS documentation: Using Docker with CoreOS ”. coreos.com . 2015年6月14日閲覧。
↑ “Docker 0.9: Introducing execution drivers and libcontainer ”. docker.com (2014年3月10日). 2015年1月20日閲覧。
↑ Libby Clark (2015年1月30日). “CoreOS Co-Founder Alex Polvi Talks Containers, Rocket vs. Docker, and More ”. Linux.com . 2015年6月14日閲覧。
↑ Charles Babcock (2015年2月20日). “Rocket Containers: How CoreOS Plans To Challenge Docker ”. informationweek.com . 2015年6月14日閲覧。
↑ Alex Polvi (2014年12月1日). “CoreOS is building a container runtime, rkt ”. coreos.com . 2015年6月14日閲覧。
1 2 Josh Berkus (2015年2月4日). “New etcd, appc, and Rocket releases from CoreOS ”. LWN.net . 2015年6月22日閲覧。
1 2 Josh Berkus (2015年5月13日). “CoreOS Fest and the world of containers, part 1 ”. LWN.net . 2015年6月22日閲覧。
↑ Nathan Willis (2014年12月3日). “The Rocket containerization system ”. LWN.net . 2015年6月22日閲覧。
↑ McAllister, Neil (2015年6月22日). “Docker and chums unveil standards org for software containers” . The Register . 2017年1月19日閲覧 . Announced at the DockerCon conference in San Francisco on Monday, the Open Container Project (OCP) will maintain and develop a common container runtime and image format based in part on code and specs donated by Docker.
↑ Frederic Lardinois (2015年6月22日). “Docker, CoreOS, Google, Microsoft, Amazon and others come together to develop common container standard” . TechCrunch . 2015年6月24日閲覧 .
↑ “Industry Leaders Unite to Create Project for Open Container Standards ”. opencontainers.org (2015年6月22日). 2015年8月13日時点のオリジナル よりアーカイブ。2015年6月24日閲覧。
↑ Neil McAllister (2015年7月22日). “Open Container Project renames, says standard is just weeks away: Linux Foundation, Docker and friends opt for Open Container Initiative ”. The Register . 2016年1月29日閲覧。
↑ “CoreOS documentation: Using systemd with CoreOS ”. coreos.com . 2014年2月14日時点のオリジナル よりアーカイブ。2014年2月13日閲覧。
1 2 “CoreOS documentation: Updates & patches ”. coreos.com . 2014年2月14日時点のオリジナル よりアーカイブ。2015年2月27日閲覧。
1 2 Phil Whelan (2013年8月28日). “Alex Polvi Explains CoreOS ”. activestate.com . 2015年2月24日時点のオリジナル よりアーカイブ。2015年5月7日閲覧。
↑ “CoreOS documentation: Adding disk space to your CoreOS machine ”. coreos.com . 2015年2月27日閲覧。
↑ Alex Polvi (2014年3月27日). “Major Update: btrfs, Docker 0.9, add users, writable /etc, and more! ”. coreos.com . 2015年2月27日閲覧。
↑ “Simple Introduction to CoreOS with CEO Alex Polvi and CTO Brandon Philips ”. centurylinklabs.com (2014年6月6日). 2015年6月22日閲覧。
↑ “CoreOS documentation: Update strategies ”. coreos.com . 2015年4月17日閲覧。
↑ “coreos/locksmith: locksmith/README.md at master ”. github.com (2015年2月1日). 2015年4月17日閲覧。
↑ “coreos/locksmith: locksmith/LICENSE at master ”. github.com (2014年1月19日). 2015年4月17日閲覧。
↑ “Omaha – software installer and auto-updater for Windows ”. code.google.com . 2014年10月11日閲覧。
↑ “Omaha Overview ”. omaha.googlecode.com (2009年9月23日). 2009年5月6日時点のオリジナル よりアーカイブ。2014年10月11日閲覧。
↑ “Package omaha ”. godoc.org (2014年6月24日). 2014年7月4日閲覧。
↑ “CoreOS documentation: CoreUpdate ”. coreos.com . 2014年7月4日閲覧。
↑ Mark Moudy (2014年5月16日). “CoreOS + Docker Development Environment Demo ”. github.com . 2015年4月16日閲覧。
1 2 Jonathan Corbet (2014年10月22日). “Etcd and fleet ”. LWN.net . 2015年6月22日閲覧。
↑ “CoreOS documentation: Using etcd with CoreOS ”. coreos.com . 2014年2月13日閲覧。
↑ “CoreOS documentation: Getting started with etcd ”. coreos.com . 2014年2月13日閲覧。
↑ Brandon Philips (2014年1月15日). “etcd @ GoSF ”. speakerdeck.com . 2014年2月13日閲覧。
↑ Wood. “Container orchestration: Moving from fleet to Kubernetes ”. coreos..com . CoreOS. 2019年11月11日閲覧。
↑ Justin Ellingwood (2014年9月12日). “How To Use Fleet and Fleetctl to Manage your CoreOS Cluster ”. digitalocean.com . 2015年6月22日閲覧。
↑ “CoreOS documentation: Launching containers with fleet ”. coreos.com . 2014年4月3日閲覧。
↑ “CoreOS documentation: Using the client ”. coreos.com . 2014年4月3日閲覧。
↑ “coreos/fleet: fleet/README.md at master ”. github.com (2014年2月18日). 2014年4月3日閲覧。
↑ “coreos/fleet: fleet/Documentation/deployment-and-configuration.md at master (Deploying fleet) ”. github.com (2015年4月14日). 2015年4月17日閲覧。
↑ “coreos/fleet: fleet/Documentation/api-v1.md (fleet API v1) ”. github.com (2014年10月29日). 2015年4月17日閲覧。
↑
“coreos/fleet: fleet/LICENSE at master ”. github.com (2014年2月6日). 2014年4月3日閲覧。
↑ “CoreOS documentation: Installing CoreOS to disk ”. coreos.com . 2014年2月13日閲覧。
↑ “CoreOS documentation: Booting CoreOS via PXE ”. coreos.com . 2014年2月13日閲覧。
↑ “CoreOS documentation: Booting CoreOS via iPXE ”. coreos.com . 2014年2月13日閲覧。
↑ Alex Crawford (2014年9月5日). “CoreOS Image Now Available On DigitalOcean ”. coreos.com . 2014年9月5日閲覧。
↑ Jack Clark (2014年5月23日). “Google brings futuristic Linux software CoreOS onto its cloud ”. The Register . 2014年5月26日閲覧。
↑ Alex Crawford (2014年10月20日). “CoreOS Now Available On Microsoft Azure ”. coreos.com . 2014年10月22日閲覧。
↑ Steven J. Vaughan-Nichols (2015年4月6日). “CoreOS is bringing Google's Kubernetes to the enterprise” . ZDNet . 2015年4月29日閲覧 .
↑ Eugene Yakubovich (2014年8月28日). “Introducing flannel: An etcd-backed overlay network for containers ”. coreos.com . 2015年6月22日閲覧。
↑ “Tutorial on using CoreOS Flannel for Docker ”. slideshare.net (2014年11月). 2015年6月22日閲覧。
↑ Rosoff (2018年1月30日). “Red Hat pays $250 million for CoreOS, a start-up that sells Google-developed technology ” (英語). CNBC . 2019年6月6日閲覧。
↑ “Fedora CoreOS, Red Hat CoreOS, and the future of Container Linux | CoreOS ”. coreos.com . 2019年6月6日閲覧。
↑ “Announcing the Flatcar Linux project | Kinvolk ”. kinvolk.io . 2019年6月6日閲覧。
↑ “Introducing the Flatcar Linux Edge Channel | Kinvolk ”. kinvolk.io . 2019年6月6日閲覧。
↑ “CoreOS: A different kind of Linux distribution [ LWN.net] ”. 2025年10月29日閲覧。
関連項目
アプリケーションの仮想化 – アプリケーションソフトウェアを実行するOSに対してカプセル化するソフトウェア技術
アプリケーション仮想化ソフトウェアの比較 – さまざまなポータブル言語とスクリプト言語の仮想マシンの比較
プラットフォーム仮想化ソフトウェアの比較 – 物理コンピューター全体をエミュレートする、ざまなエミュレーターやハイパーバイザーの比較
LXC (Linuxコンテナ) – Linuxが制御する1つのホスト上で、複数の隔離されたLinuxシステム(コンテナ)を実行するための環境
OSレベルの仮想化 – 複数の隔離されたユーザー空間インスタンスに対するOSカーネルのサポートに基づいている
Software as a Service (SaaS) – ソフトウェアを中央でホストしてサブスクリプションベースでライセンスを供与するタイプのソフトウェアのライセンスと配信のモデル
仮想化 – コンピュータハードウェアプラットフォーム、オペレーティングシステム、ストレージデバイスなどの仮想バージョンを提供する一般的な概念
外部リンク
Official CoreOS and Tectonic websites, and GitHub source code repositories: CoreOS - GitHub , etcd - GitHub , fleet - GitHub , rkt - GitHub and CoreOS-overlay - GitHub
Container Linux - DistroWatch
First glimpse at CoreOS , September 3, 2013, by Sébastien Han
CoreOS: Linux for the cloud and the datacenter , ZDNet , July 2, 2014, by Steven J. Vaughan-Nichols
What's CoreOS? An existential threat to Linux vendors , InfoWorld , October 9, 2014, by Matt Asay
Understanding CoreOS distributed architecture , March 4, 2015, a talk to Alex Polvi by Aaron Delp and Brian Gracely
CoreOS fleet architecture , August 26, 2014, by Brian Waldon et al.
Running CoreOS on Google Compute Engine , May 23, 2014
CoreOS moves from Btrfs to Ext4 + OverlayFS , Phoronix, January 18, 2015, by Michael Larabel
Containers and persistent data , LWN.net, May 28, 2015, by Josh Berkus