Red Hat Training

A Red Hat training course is available for RHEL 8

第1章 コンテナーを使い始める

Linux コンテナーは、イメージベースのデプロイメント方法の柔軟性と、軽量アプリケーションの分離を組み合わせた、主要なオープンソースアプリケーションをパッケージ化して、配信するテクノロジーとして登場しました。Red Hat Enterprise Linux は、以下のようなコア技術を使用して Linux コンテナーを実装します。

  • リソース管理用のコントロールグループ (cgroup)
  • プロセス分離用の namespace
  • SELinux (セキュリティー用)
  • セキュアなマルチテナンシー

このような技術は、セキュリティーエクスプロイトの可能性を軽減し、エンタープライズ品質のコンテナーを生成および実行する環境を提供します。

Red Hat OpenShift は、強力なコマンドラインと Web UI ツールを提供し、Pod と呼ばれる単位でコンテナーを構築、管理、および実行します。Red Hat では、OpenShift 外で個々のコンテナーおよびコンテナーイメージをビルドして管理できます。本書では、RHEL システムで直接実行されるタスクを実行するためのツールについて説明します。

他のコンテナーツールの実装とは異なり、ここで説明するツールはモノリシック Docker のコンテナーエンジンと、docker コマンドを中心としたものではありません。代わりに、Red Hat はコンテナーエンジンがなくても動作できる一連のコマンドラインツールを提供します。これには、以下が含まれます。

  • Podman - Pod およびコンテナーイメージの直接管理 (runstopstartpsattachexec など)
  • buildah - コンテナーイメージの構築、プッシュ、および署名
  • skopeo - イメージのコピー、検証、削除、および署名
  • runc - podman および buildah へのコンテナーの実行機能と構築機能の提供
  • crun - ルートレスコンテナーの柔軟性、制御、セキュリティーを向上するために設定可能なオプションのランタイム。

これは、このツールが、Docker が生成して管理するのと同じ Linux コンテナーや、その他の OCI 互換コンテナーエンジンの管理に使用する Open Container Initiative (OCI) と互換性があるためです。ただし、シングルノードのユースケースでは、Red Hat Enterprise Linux で直接実行することが特に適しています。

マルチノードコンテナープラットフォームの場合は、OpenShift および CRI-O Container Engine の使用 を参照してください。

1.1. Podman、Buildah、および Skopeo の特徴

Docker コマンド機能に代わる、Podman、Skopeo、Buildah ツールが開発されました。このシナリオの各ツールはより軽量になり、機能のサブセットに焦点を当てています。

Podman、Skopeo、Buildah ツールの主な利点は次のとおりです。

  • ルートレスモードでの実行 - ルートレスコンテナーは、特権を追加しなくても実行されるため、はるかに安全です。
  • デーモンの必要なし - コンテナーが実行されていない場合、Podman は実行されないので、これらのツールではアイドル時のリソース要件がはるかに少なくなります。Docker は逆に、デーモンが常に実行しています。
  • ネイティブ systemd 統合 - Podman では systemd ユニットファイルを作成し、コンテナーをシステムサービスとして実行できます。

Podman、Skopeo、および Buildah の特徴は次のとおりです。

  • Podman、Buildah、および CRI-O のコンテナーエンジンはすべて、Docker の保存場所 /var/lib/docker をデフォルトで使用する代わりに、同じバックエンドストアディレクトリー /var/lib/containers を使用します。
  • Podman、Buildah、および CRI-O は、同じストレージディレクトリーを共有しているため、互いのコンテナーと対話することはできません。このツールはイメージを共有できます。
  • プログラムで Podman と対話するには、ルートおよびルートレス環境の両方で動作する Podman v2.0 RESTful API を使用してください。詳細は、コンテナーツール API の使用 の章を参照してください。