レビュー:VMwareのPhotonOSがDockerコンテナに最適

VMwareは、Photonオープンソースプロジェクトを使用して、仮想環境でコンテナ化されたアプリケーションを実行する方法を中心にコミュニティを構築したいと考えています。Photonは、Photon OSを使用てVMにコンテナをデプロイする方法や、VMwareインフラストラクチャにVMとしてコンテナをデプロイする方法を含む複数のプロジェクトの総称です。

Photon OSは、仮想マシン上で実行するように設計され、VMwareハイパーバイザー用に調整されたフットプリントの小さいLinuxコンテナーホストです。VMwareは確かに、VMwareだけでなく、Dockerの動きを大いに受け入れてきました。Photon OSは、Google ComputeEngineやAmazonEC2などの他のハイパーバイザーで実行できます。ただし、物理サーバーにPhotonOSをインストールすることはできません。

Dockerはデフォルトでインストールされますが、PhotonOSはコンテナツールセットについての仮定を行いません。管理者は、Photonパッケージマネージャーを使用して、選択したコンテナー管理ツールをベースOS上に階層化できます。

PhotonOSシステム管理

Photon OSでは、パッケージ管理はTDNF(Tiny Dandified Yum)を使用して行われます。これは、Yumの大きなPythonフットプリントなしでDNF互換のパッケージ管理を提供するオープンソースのVMwareクリエーションです。

VMwareは、パッケージを管理するための独自のYum互換リポジトリを提供し、GPG(GNU Privacy Guard)署名を使用してパッケージに署名します。これは、デフォルトでシステムを安全にするのに役立ちます。署名の検証は自動的に行われるため、システム管理者やスクリプトが追加の手順を実行する必要はありません。Photon OSリポジトリは「キュレーション」されているため、ダウンロード可能なすべてのパッケージが見つかるとは限りません。

Photon OS 1.0リビジョン2は古いバージョンのDockerにパッケージ化されているため、最初にやりたかったのはアップデートを試すことでした。これは問題なく進み、ほんの数分で、すべてのコンテナーが最新バージョンのDockerで実行されました。

PhotonOSはSystemdinitシステムを使用するため、管理者は、システム管理のそのフレーバーをまだ学習していない場合は学習する必要があります。セキュリティに重点が置かれ、システムにはコンテナの分離を強化するSELinuxが含まれています。ファイアウォール(iptables)はデフォルトでオンになっており、外部インターフェイス(SSHトラフィックを除く)からのパケットはドロップされるため、管理者は外部からのトラフィックを許可するルールを追加する必要があります。

クリーンインストールからrootパスワードに必須の変更を加える場合を除いて、ほとんどの場合、このデフォルトのセキュリティは邪魔になりませんでした。間違いがあると、ユーザーはシェルから出て、ログインプロンプトに戻ります。この部分はもう少しユーザーフレンドリーだったかもしれません。

PhotonOSのインストールと構成

ダウンロード可能な仮想マシンを使用してPhotonOSをインストールしました。ご想像のとおり、これは私のVMware WorkstationProのセットアップでは簡単でした。システムはダウンロードを検出し、ハードウェアパラメータを受け入れるかどうかを尋ね、すぐに起動しました。Photon OSは、ISOとして、およびAmazonとGoogleクラウドのイメージとしても利用できます。rootとしてログインし、パスワードなしのログインを構成した後、私はオフになって実行していました。

最小限のインストールは、他のコンテナLinuxホストsudoと同様に、SSHが含まれていますが、ほとんど何も含まれていません。Photon OS VMのフリートをデプロイする管理者は、セットアップのスクリプトを作成する必要があります。そのために、Photon OSは、クラウドのデプロイと構成を容易にするPythonスクリプトとユーティリティのセットであるCloud-Initを使用します。

Dockerコンテナ用のOSの場合でも、PhotonOSのセットアップは簡単でした。コンテナでNginxを実行することは、Dockerの「Helloworld」のようです。これはPhotonOS上にあります:

# systemctl start docker

# systemctl enable docker

# docker run –d –p 80:80 vmwarecna/nginx

PhotonOSのストレージとネットワーキング

仮想化されたハードウェア環境で実行することにより、ストレージデバイスは通常のハードウェアのように見え、標準のファイルシステム操作をPhotonOSで利用できます。他のディスクと同じように、新しい(仮想)ディスクをマシンに追加して、必要な場所にマウントできます。Photon OSファイルシステムには、BtrfsとExt4が含まれています。デフォルトのルートファイルシステムはExt4です。Btrfsの例は少なく、Ext4が優勢のようです。

リモートストレージは、PhotonNFSユーティリティによって処理されます。私が使用した他のコンテナ指向のLinux(Alpine、RancherOS、CoreOS、およびAtomic Host)には、NFSの手順が含まれていなかったため、VMwareがそのプラクティスを文書化したことをうれしく思いました。NFSはまだ生きていて、エンタープライズ環境で機能しています。NFSドライブのマウントは、PhotonOSユーザーの一般的な使用例になると思います。

Photon OSの唯一の珍しいストレージオプションは、読み取り専用または読み取り/書き込みファイルシステムの選択ですが、これは実際にはユースケースによって異なり、私はその選択ができてうれしかったです。

Photon OSのネットワークでは、iproute2ユーティリティが使用されますが、従来のコマンドipconfignetstatコマンドが含まれています。Photon OSのインストールには、デフォルトでコンテナネットワーク構成は含まれていませんが、Docker、Rocket、DCOSなどの多くの一般的な構成が文書化されています。ネットワークの観点からは、Photon OSは他の種類のLinuxとまったく同じであり、驚くことはありませんでした。

PhotonOSのアップグレードとダウングレード

RedHatのAtomicHostと同様に、Photon OSは、独自のOSTreeサーバーを備えたハイブリッドイメージ/パッケージ管理システムとしてrpm-ostreeを使用します。 rpm-ostreeコマンドセット、用語、およびベストプラクティスを理解するには、管理者に時間がかかります。管理者は、学習する新しいコマンドセットを学習することに加えて、読み取り専用ディレクトリを認識し、アプリケーションがディレクトリにファイルを書き込まないようにする必要があります。たとえば、rpm-ostreeを使用する場合、/ usrディレクトリは読み取り専用です。 rpm-ostreeプロファイルはインストール時のオプションであるため、ユーザーはパッケージ管理用にTDNFまたはrpm-ostreeから選択できます。ドキュメントはこのトピックに適しています。

Photon OSを開発する際、VMwareはLinuxカーネルからあらゆる種類のレガシーモジュールを取り除くことができました。VMwareはハードウェアとOSスタック全体を制御するため、バッファー、時間アカウンティング、およびフラグのコンパイルを調整して、コンテナーランタイムとハイパーバイザーの間の冗長性を排除することもできました。VMware仮想化に投資している組織の場合、調査するリストの一番上にPhotonプロジェクトを配置する必要があります。