セクションを選択

Skopeo とは

URL をコピー

Skopeo は、Linux® システム、Windows、MacOS でコンテナイメージとイメージリポジトリの操作、検査、署名、転送を行うためのツールです。Podman や Buildah と同様、Skopeo は、コンテナデーモンの実行を必要としないオープンソースのコミュニティ主導型プロジェクトです。

Skopeo を使用すると、リモートレジストリ上のイメージを検査する場合にすべてのレイヤーを含めたイメージ全体をダウンロードする必要がなく、Open Container Initiative (OCI) や Docker など、さまざまな形式のコンテナイメージを扱うモジュール式の軽量なソリューションになります。

コンテナイメージは、分離されたプロセスで実行できる実行可能コードが含まれるファイルです。コンテナイメージは次の 2 つの部分で構成されます。

tar アーカイブ

まず、コンテナのファイルシステムの 1 つまたは複数の tar アーカイブです。tar アーカイブはファイルのコレクションであり、ファイルシステムのディレクトリには、アプリケーションの実行に必要なすべてのコードと構成ファイルが含まれています。

JSON ファイル

次に JSON ファイルです。これは、アプリケーションの記述、コンテナの実行方法に関する開発者による構成の提供、アプリケーションとサーバー間でのデータ送信、イメージの個々のコンポーネントとそれらの参照方法に関するメタデータの保存を行います。

コンテナリポジトリは、さまざまなバージョンのアプリケーションを提供するコンテナイメージのグループであり、コンテナレジストリは、イメージへのアクセスや新しいイメージをアップロードする機能を提供するサーバーです。 

Skopeo (ギリシャ語で「リモートビューイング」) は、Red Hat のエンジニアがオープンソース・コミュニティと共に開発した最初のコンテナツールです。Skopeo は Podman および Buildah と連携して OCI コンテナを管理します。簡単に言えば、Podman がコンテナを実行し、Buildah がコンテナを構築し、Skopeo がコンテナを転送します。これらのツールは、コンテナ環境用のスイスアーミーナイフだと考えてください。Skopeo は自由に使える巧妙で多用途なナイフです。

Skopeo は、skopeo inspect コマンドでイメージを検査します。Skopeo がリリースされる前は、一部のメタデータのみを検査したい場合でも、イメージを検査するにはイメージ全体を取得する必要がありました。Skopeo の inspect コマンドは、レイヤー、イメージタグ、ラベルなど、イメージのプロパティを表示するため、ホストにイメージをプルする必要はありません。これにより、容量を一切使用せずにリポジトリまたはタグに関する情報を収集できます。 

また、Skopeo を使用すると、リポジトリからイメージを削除し、外部のイメージリポジトリを内部レジストリに同期して、接続されていないネットワーク (エアギャップともいう) をより安全にデプロイできます。リポジトリによって要求された場合、Skopeo は認証用に適切な資格情報と証明書を渡すことができます。  

skopeo sync により、オンラインで使用するためにレジストリ間で直接コピーしたり、接続されていない環境を準備するためにレジストリとファイル間でコピーしたりすることが可能になります。要求されたコピーにアクションが必要であると想定する skopeo copy とは異なり、skopeo sync は、ほとんど変更されていない大規模なリポジトリの定期的な再同期を高速で行うように調整されていますコマンドラインを直接使用するだけでなく、config ファイルで同期操作を構成することもできます。これにより、大規模なリポジトリからタグのサブセットのみを同期できます。

検査の結果、ある場所またはストレージタイプから別の場所またはストレージタイプにコンテナイメージをコピーする必要があることが示された場合は、skopeo copy コマンドを使用して実行できます。このツールを使用すると、docker.io、quay.io などのレジストリと内部のコンテナレジストリの間、またはローカルシステム上のさまざまなストレージメカニズムの間でコンテナイメージをコピーできます。Skopeo のレジストリ間の直接コピーは高速で、コピー先のレジストリで許可されている場合、変更されていない形式 (およびイメージのマニフェストダイジェスト) を保持します。レジストリ間でイメージをコピーする場合、ローカルディスクの使用やローカルディスクの空き領域は必要ありません。また、Skopeo は、コンテナエンジンのストレージとディレクトリの間でも移動します。コンテナレジストリを最新の状態に保ち、コンテナサーバー上のストレージを維持するために、CI/CD システムで頻繁に使用されます。

柔軟なツール

Skopeo は、多くの利点を持つコンテナツールのモジュール式スイートに属します。モノリシックなツールを壊すことなく、既存ユーザーのために大幅な変更を導入するのは困難な場合があります。Skopeo、Podman、Buildah のような小型で専門化されたツールは、より迅速に進化させることができます。ツールをセットにすることで、各ツールを 1 つの目的に集中させることができ、新しいツールを追加して機能を増やしたり、既存のツールでは対応できない可能性のあるアイデアやアーキテクチャを試すことができます。より小型でモジュール化されたツールは、保護も容易です。

Podman の機能の一部を、コードを他のツールと共有できるようにする libpod ライブラリから取得するのと同様に、Skopeo の機能もライブラリに実装されます。Skopeo のコンテナ/イメージライブラリは、Podman、Buildah、CRI-O などの他のコンテナツールによって共有され、Docker コマンドライン・インタフェース (CLI) に対応します。 

セキュリティとアクセス性

Podman、Skopeo、Buildah を併用する主な利点には、次のようなものがあります。

  • ルートレスコンテナの管理:ユーザーは管理者権限を持つプロセスを必要とせずにコンテナを作成、実行、管理できるため、コンテナ環境にアクセスしやすくなり、セキュリティリスクも軽減できます。
  • デーモンレスのアーキテクチャ:デーモンは、ファイルの読み取り、プログラムのインストール、アプリケーションの編集などを行うための管理アクセス権を必要とします (同時に、管理者認証の必要性が回避されます)。このため、デーモンは、コンテナを制御してホストシステムに侵入しようとするハッカーにとって格好の標的になります。 
  • systemd のネイティブ統合:Podman と関連するコンテナツールを使用すると、systemd ユニットファイルを作成し、コンテナをシステムサービスとして実行できます。

Kubernetes 

Kubernetes はオープンソースのコンテナ・オーケストレーション・プラットフォームで、コンテナ化アプリケーションのデプロイ、管理、スケーリングに伴う多くの手動プロセスを自動化します。Kubernetes 内で CI/CD システムを実行する場合や Red Hat OpenShift® を使用してコンテナイメージを構築する場合、それらのイメージを異なるコンテナレジストリに分散する必要があるかもしれません。Skopeo は、このようなタスクに最適なツールです。

HPC (高性能計算)

ホストシステムで古いオペレーティングシステムを実行しているユーザーは、Skopeo などのツールを実行して、最新の機能や更新を利用したいと考えるかもしれません。HPC (高性能計算) 環境での一般的な制限は、ルートレスユーザーがホストにパッケージをインストールできないことです。HPC での Podman の利用が増えている背景には、Podman で Skopeo コンテナを稼働させて特定のタスクを実行することはわずかなコマンドで可能で、ユーザーは root アクセスを必要としないということがあります。 

Red Hat Enterprise Linux は少ないリポジトリと、多くの開発者用ツールでコンテナ開発を単純化します。Podman、Buildah、Skopeo などのコンテナツールは Red Hat Enterprise Linux サブスクリプションに含まれており、コンテナイメージとコンテナのニーズをサポートする強力な基盤を形成します。これらのツールに加えて、Red Hat は、組織独自のイメージの基盤として機能するベースイメージを提供します。 

Red Hat Enterprise Linux のコマンドラインツール、Universal Base Image (UBI)、Red Hat Quay のリポジトリ、Supplemental リポジトリを使用してコンテナイメージを実行、構築、共有することで、コンテナ開発の複雑さが軽減されます。

関連資料

記事

コンテナと VM

Linux コンテナと仮想マシン (VM) は、さまざまな IT コンポーネントが組み合わさってシステムの他の部分から分離している、パッケージ化されたコンピューティング環境です。

記事

コンテナ・オーケストレーションとは

コンテナ・オーケストレーションは、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化します。

記事

Linux コンテナとは

Linux コンテナとは、システムから分離された一連のプロセスであり、そのプロセスのサポートに必要なすべてのファイルを提供する個別のイメージから実行されます。

Red Hat Enterprise Linux の詳細はこちら