Skip to content

Nydus Snapshotterを使用した遅延プル

⚡ 必要条件 nerdctl >= 0.22

Nydus snapshotterは、Nydusイメージサービス用のcontainerdのリモートスナップショットプラグインであり、コンテナの起動速度、イメージスペース、ネットワーク帯域幅の効率、およびいくつかのランタイムバックエンド(FUSE、virtiofs、およびカーネル内EROFS(Linuxカーネル5.19+))とのデータの整合性の観点から、現在のOCIイメージ仕様を向上させるチャンクベースのコンテンツアドレス指定可能なファイルシステムを実装しています。

nerdctl実行の遅延プルを有効にする

  • https://github.com/containerd/nydus-snapshotter から containerd リモートスナップショットプラグイン (containerd-nydus-grpc) をインストールします

  • 以下を /etc/containerd/config.toml に追加します。

    [proxy_plugins]
      [proxy_plugins.nydus]
        type = "snapshot"
        address = "/run/containerd-nydus-grpc/containerd-nydus-grpc.sock"
    

  • Launch containerd and containerd-nydus-grpc

  • Run nerdctl with --snapshotter=nydus

    # nerdctl --snapshotter=nydus run -it --rm ghcr.io/dragonflyoss/image-service/ubuntu:nydus-nightly-v5
    

変換前の Nydus イメージの一覧については、https://github.com/orgs/dragonflyoss/packages?page=1&repo_name=image-service を参照してください。

nerdctl image convert を使用して Nydus イメージをビルドする

Nerdctlは、nerdctl image convertコマンドを使用して、OCIイメージまたはDocker形式のv2イメージをNydusイメージへの変換をサポートしています。

変換の前に、 "nydus static package"に含まれるnydus-image バイナリがインストールされている必要があります。nerdctl image convert--nydus--oci--nydus-image<the_path_of_nydus_image><source_image><target_image>のようなコマンドを実行すると、<source_image><target_image>というタグを持つNydusのイメージに変換できます。

今のところ、変換されたNydusイメージを直接実行することはできません。 nerdctl runの前に、nerdctl image pullの処理フローの一部として、nydus snapshotter への解凍を行なう必要があります。そのため、変換後に変換されたイメージをレジストリにプッシュし、イメージを実行する前に nerdctl --snapshotter nydus image pull を使用して nydus snapshotterに解凍する必要があります。

必要に応じて、nydusify 変換ツールを使用して、変換された Nydus イメージの形式が有効かどうかを確認できます。Nydus イメージの検証と Nydus イメージのビルド方法の詳細については、nydusifyacceld を参照してください。