はじめに
コンテナに最適化されたOS、CoreOSは別名Container Linuxとも呼ばれています。
本記事では「CoreOS」を初めて聞いた方向けに分かりやすい記事を書きました。
CoreOSとは?
以下が公式文書です。
Container Linux redefines the operating system as a smaller, more compact Linux distribution. Traditional distros package unused software that leads to dependency conflicts and needlessly increases the attack surface.
余計なパッケージを削ったコンパクトなOSという文言で紹介されるCoreOS、実体はどんなOSなのでしょうか?
歴史的には、OpenStackで有名なRackspaceで働いていたAlex Polvi氏が設立した会社が「CoreOS」で、同名のLinux DistributionをOSSで公開しました。
そんなCoreOSは2018年にRed Hatに買収され、現在も開発されています。
CoreOSの特徴
上でも触れたようにカーネル部分にて不要な機能を削っているからかイメージサイズが小さいだけでなくOS機能としてのメモリ使用量も抑えられています。これは、コンテナに割り当てることができるメモリが大きくなることを意味します。
実際、Container Linuxというだけあって、CoreOSで動かすアプリケーションはコンテナとして起動させることを前提に設計されています。
Dockerだけでなく同じくコンテナ実行環境であるrktも同様に利用が想定されており、rkt自体もCoreOSのプロジェクトで開発されています。
以下のサイトでDockerとの比較も記載されていますが、セキュリティの設計等で一枚上手であると述べられていました。
rkt vs Other Projects
また、CoreOS界隈でよく聞く単語に「etcd」があります。こちらはjsonのような分散KVSですがCoreOSに関する設定ファイルとして利用されます。
このファイルはクラスタリング機能を実現する際に利用され、もちろんオーケストレーションツールであるKubernetesにおける接続においてもここに保持している情報が利用されます。
GoogleCloudPlatformで利用してみる
- CoreOS alpha
- CoreOS beta
- CoreOS stable
から選択でき、下に行くほど安定板です。
今回は「stable」を選択してログインを行うと
Container Linux by CoreOS stable
上記メッセージがプロンプトに出現します。
もちろんdocker
コマンドがデフォルトでインストールされています。
$ which docker /usr/bin/docker
終わりに
再掲ですが、CoreOSというのはコンテナ利用に特化した軽量なLinuxコンテナ利用に特化した軽量なLinuxコンテナ利用に特化した軽量なLinuxです。
rktやetcdなど関連用語もありますが、基本的なクラウドでは利用可能OSとして提供されているのでぜひ実際に触って遊んでみることをお勧めします。