7.2. シンプルなコンテナー構築プロセス
アプリケーションをコンテナー化するには、ビルドツール、イメージを定義するファイル、およびアプリケーションを保存配布するためのコンテナーレジストリーが必要です。
まず、Buildah や docker のようなコンテナー構築ツールが必要です。コンテナーの中身を記述するファイルも必要です。これは通常、Dockerfile と呼ばれます。
次に、生成されたコンテナーイメージをプッシュする場所が必要です。そうすることで、イメージをプルして、任意の場所で実行できるようになります。この場所はコンテナーレジストリーになります。
各コンポーネントのサンプルは、ほとんどの Linux オペレーティングシステムにデフォルトでインストールされています。ただし Dockerfile はユーザーが各自で用意する必要があります。
以下の図は、イメージをビルドし、プッシュするプロセスを示しています。
図7.1 単純なコンテナー化アプリケーションを作成し、レジストリーにプッシュする
Red Hat Enterprise Linux (RHEL) をオペレーティングシステムとして実行しているコンピューターを使用している場合、コンテナー化されているアプリケーションを作成するプロセスには以下の手順が必要になります。
- コンテナービルドツールのインストール。RHEL には、コンテナーのビルドと管理に使用される podman、buildah、skopeo など一連のツールが含まれています。
-
Dockerfile を作成してベースイメージとソフトウェアを組み合わせる。コンテナーのビルドに関する情報は、
Dockerfileというファイルに保管されます。このファイルでビルドの起点となるベースイメージ、インストールするソフトウェアパッケージ、コンテナーにコピーするソフトウェアを指定します。さらに、コンテナーの外部に公開するネットワークポートやコンテナーの内部にマウントするボリュームのなどのパラメーター値も指定します。Dockerfile とコンテナー化するソフトウェアは、RHEL システムのディレクトリーに配置します。 -
buildah または docker build を実行する。
buildah build-using-dockerfileまたはdocker buildコマンドを実行し、選択したベースイメージをローカルシステムにプルして、ローカルに保存されるコンテナーイメージを作成します。 buildah を使用して、Dockerfile なしにコンテナーイメージをビルドすることもできます。 -
タグ付けおよびレジストリーへのプッシュを実行します。コンテナーの格納および共有に使用するレジストリーの場所を特定する新しいコンテナーイメージにタグを追加します。次に、
podman pushコマンドまたはdocker pushコマンドを実行してそのイメージをレジストリーにプッシュします。 -
イメージをプルして実行する。Podman や Docker などのコンテナークライアントツールがある任意のシステムから、新しいイメージを特定するコマンドを実行します。たとえば、
podman run <image_name>やdocker run <image_name>のコマンドを実行します。ここで、<image_name>は新しいイメージの名前であり、quay.io/myrepo/myapp:latestのようになります。レジストリーでは、イメージをプッシュおよびプルするために認証情報が必要になる場合があります。
コンテナーイメージをビルドし、レジストリーにプッシュし、それらを実行するプロセスの詳細は、「Buildah によるカスタムイメージビルド」を参照してください。
7.2.1. コンテナービルドツールのオプション リンクのコピーリンクがクリップボードにコピーされました!
buildah、podman、および skopeo を使用してコンテナービルドし、管理すると、それらのコンテナーを最終的に OpenShift Container Platform またはその他の Kubernetes 環境にデプロイする目的で調整された各種機能が含まれる業界標準のコンテナーイメージが生成されます。
これらのデーモンレス、ルートレスツールは、オーバーヘッドを削減しながら、コンテナーを Kubernetes 向けにチューニングします。
コンテナーランタイムとしての Docker Container Engine のサポートは、Kubernetes 1.20 で非推奨になり、将来のリリースで削除される予定です。ただし、Docker で生成されたイメージは、CRI-O を含むすべてのランタイム環境において、引き続きクラスター内で動作します。詳細は、「Kubernetes ブログのお知らせ」を参照してください。
最終的に OpenShift Container Platform でコンテナーを実行する場合、CRI-O コンテナーエンジンを使用します。CRI-O は OpenShift Container Platform クラスター内のすべてのコンピュートとコントロールプレーンマシンで動作しますが、OpenShift Container Platform 以外でのスタンドアロンランタイムとしてはまだサポートされていません。