はじめに
このドキュメントでは、Cisco CatalystとOCIパッケージの非互換性が原因で発生するコンテナインストール障害の分析と解決について説明します
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Catalyst 9000シリーズスイッチでのアプリケーションホスティング
- Dockerコンテナイメージ形式、特にDockerおよびOpen Container Initiative(OCI)標準
- Docker Engineのバージョンの違いとCisco IOS®リリースとの互換性
- Cisco IOS® CLIに関する基本的な知識とコンテナのインストールに関するトラブルシューティング
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Cisco Catalyst 9300Xシリーズスイッチ
- Cisco IOS® ソフトウェア
- OCIフォーマットを使用してコンテナとしてパッケージ化されたサードパーティ製アプリケーション
- アプリケーションホスティングコンテナ用のストレージとしてのソリッドステートドライブ(SDD)ドライブ
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
Cisco Catalyst 9000シリーズスイッチのアプリケーションホスティングにより、IOxプラットフォームを活用して、コンテナベースのアプリケーションをスイッチハードウェアに直接導入できます。これらのコンテナでは、Dockerイメージ形式がよく使用されます。最近のコンテナ包装規格の発展により、Open Container Initiative(OCI)形式が導入されました。この形式はすべてのDocker Engineバージョンで一般的にサポートされているわけではありません。新しいCisco IOS®バージョンのリリースに伴い、シスコではDocker Engineの最新バージョンのサポートを段階的に追加し、OCIパッケージコンテナとの互換性を拡大しています。ただし、すべてのCisco IOS®リリースおよびすべてのCatalystプラットフォームがOCIパッケージングをサポートしているわけではありません。組織が新しい標準を活用するサードパーティアプリケーションを展開しようとすると、ソフトウェアバージョンとコンテナ形式の間の不一致により、インストールの失敗や関連エラーが発生する可能性があります。
問題
目的は、Cisco Catalyst 9000シリーズスイッチ、特にCisco IOS® 17.6.4を実行しているデバイス上で、サードパーティアプリケーションをアップグレードするか、コンテナとしてインストールすることでした。このアプリケーションはOCI準拠のDockerイメージとしてパッケージ化され、SSDドライブに保存されています。インストール中に、プロセスが失敗し、アーカイブファイル構造に関連するエラーと必須BLOBの欠落が発生しました。この問題の詳細な再現と説明を次に示します。
ステップ1:Cisco IOS® 17.6.4へのコンテナのインストールの試行
Device#Aug 15 13:11:11.389 UTC: %IM-6-INSTALL_MSG: R0/0: ioxman: app-hosting: Install failed: Invalid Archive file: Unable to extract docker rootfs /disk0/pathview-cmp.tar to /vol/disk0/caf/tmpExtractf117jdv6/rootfs Error:Mandatory layer blobs is missing!
このエラーメッセージは、提供されたtarファイルからDockerファイルを抽出する際の障害を示します。特に、欠落している必須の画層BLOBを参照しています。これは、コンテナイメージの形式とスイッチで使用できるDocker Engineのバージョンの間に互換性がないという症状です。
手順2: Tarファイルの構造を調べる
Device#archive tar /table flash:pathview-cmp.tar
blobs/ (directory)
blobs/sha256/ (directory)
blobs/sha256/0318da79d21ba1e610bde0c6029f424293316cb913bb8e39a673c1f344be8727 (477 bytes)
blobs/sha256/046b3f7b867b1b7b8abd8ad22b3d64d1692f670c6a6e210a03ad3d31e9e80e79 (2996736 bytes)
blobs/sha256/04f0912220f0c2c6935e817813866ba3bdadba386edc577325a83a1fdb4879d2 (2560 bytes)
blobs/sha256/1e5cb17607b5c739629c9d0be80fa48f57ccd3507962ac221c9fbb91b20af171 (3584 bytes)
blobs/sha256/26323df902297791c86ab980a2cfaa76a9939bc7cc72646d6d0fb02db2fd0c32 (477 bytes)
blobs/sha256/2e4b80ea022a9c575ff90f41c4a533a0104a0361be4f563d50ec128aea973f57 (3072 bytes)
blobs/sha256/31aedc7091e9c30e45a6b276bd3bbe922ded9791ef4a9b9c9e44d3c9ddd74183 (477 bytes)
blobs/sha256/4172f6ce43d7636f98bfca81b0dc64ab7a600bbc7c60916c70a89749d092bd28 (11776 bytes)
blobs/sha256/4654182bbf590a33df0930847ce2803792ad2822e19c630f00bb39abb0c98ef6 (11676 bytes)
blobs/sha256/4ba2623fac214b72c911695418ed7d4d3b41dc1ed9101e448ca124ed126f0cf5 (401 bytes)
blobs/sha256/625d905965265a01abf82f80bd0c9c103ab229efbffdf8e17e5408a97d9ba470 (477 bytes)
blobs/sha256/6ba030bdcefc282c164bc0c6b4dfa8f30f085487aba82c1524a55649f2741e98 (1908 bytes)
blobs/sha256/6c4c763d22d0c5f9b2c5901dfa667fbbc4713cee6869336b8fd5022185071f1c (77895680 bytes)
blobs/sha256/6def6f10cc5b9a7dc012ca9e9321013a1d947c60f7ef902af2bcdef2fc53efcb (207397376 bytes)
blobs/sha256/7a2f3e2b33a720bc5ba562639d581574c997fa47efb26486360e0cad9d311573 (4096 bytes)
blobs/sha256/96cbe396af0cb40feb2bdab0d22e2a5f5ca3865455d7c8ca28245e1462eaf2be (477 bytes)
blobs/sha256/a0b1b29152e438cee663922cf019cc9beccd1958e3385cbb0b1c4b2c8f5cf0f8 (2048 bytes)
blobs/sha256/a9775757eec8bb747ca1dd66356a643943d4c9e18cccb7135305f9f3ff3c6790 (3584 bytes)
blobs/sha256/b5a729e23ce10966aa1935040de68b24dedc7b7cbc98dd233307623f95330493 (1971200 bytes)
blobs/sha256/c21b565f0164ee4f392a2f3507b36a5f7d06c77db979e84e9fd6100f3c5f1ef5 (2220 bytes)
blobs/sha256/c5b39eb2dc5af9a446af02dd67237191f5fc164dce4bfeb2cbc63ab7802fc50f (29141504 bytes)
blobs/sha256/d0539e4616d88232f284a9d469ee309dec1850aa8b6ed4f57b2e84f413eba34d (477 bytes)
blobs/sha256/d13aa916c45e4866e0bc3af1a68ee7360b5e1c074cd0849f67b72b64e5e4d4f5 (477 bytes)
blobs/sha256/d4924836d34beac0bc207c42351234b771a3f2a0d3a0bc1e8b1aa175edb70852 (477 bytes)
blobs/sha256/d86d4fab4a9109fea084cccddefb3bb78b69d20674a1104d8ca3170ed4ad50d7 (477 bytes)
blobs/sha256/dd1f33c08d67af57858bcc4aa1cedd4cfa00560b77b248e0903ae26bb66bea87 (477 bytes)
blobs/sha256/efdcd58e09999ffc1bca3ca8256a03fdf8fa90713478d2ed13f884ddd2e3cad2 (12800 bytes)
blobs/sha256/f356261d8da7bf5ad814f757b1a51b9be2eb74c59cfcda944be2d31ab56f5ecd (477 bytes)
index.json (381 bytes)
manifest.json (4135 bytes)
oci-layout (31 bytes) <<< Indication that the container is created using OCI standard
repositories (101 bytes)
device#
抽出にもかかわらず、インストールが失敗し、問題がファイルの整合性ではなく形式の互換性にあることを確認しました。コンテナtarファイルはOCI構造を使用していると認識されていますが、Cisco IOS® 17.6.4に存在するDockerデーモン(dockerd)バージョンではサポートされていません。
ステップ3:スイッチ上のIOxとDockerdのバージョンを確認する
Device#show iox
IOx Infrastructure Summary:
---------------------------
IOx service (CAF) : Running
IOx service (HA) : Running
IOx service (IOxman) : Running
IOx service (Sec storage) : Not Running
Libvirtd 5.5.0 : Running
Dockerd 18.03.0 : Running <<< This version doesn't support OCI packaging
Sync Status : Disabled
この出力は、OCIパッケージコンテナをサポートしないDockerdバージョン18.03.0をスイッチが実行していることを示しています。これは、OCI形式のイメージのインストールエラーの原因です。
解決方法
このソリューションでは、Cisco IOS®ソフトウェアを、OCI形式のコンテナをインストールできる最新のDocker Engine(dockerd)をサポートするバージョンにアップグレードします。このプロセスはステップごとに説明されています。
ステップ1:互換性のあるCisco IOS®バージョンへのスイッチのアップグレード
スイッチをCisco IOS®バージョン17.8.1以降にアップグレードします。このバージョンには、OCIパッケージをサポートするDockerd v19.03.13-ce以降が含まれています。
ステップ2:アップグレード後のDockerdバージョンの確認
Device#show iox
IOx Infrastructure Summary:
---------------------------
IOx service (CAF) : Running
IOx service (HA) : Running
IOx service (IOxman) : Running
IOx service (Sec storage) : Running
Libvirtd 5.5.0 : Running
Dockerd v19.03.13-ce : Running <<< Version that supports OCI packaging
Sync Status : Disabled
Dockerdがv19.03.13-ce以降で動作していることを確認します。その場合、OCI形式のコンテナを正常にインストールできます。
ステップ3:コンテナのインストールの再試行
Docker Engineのバージョンを確認した後、コンテナのインストールプロセスを繰り返します。アーカイブの抽出に関連するエラーやBLOBの欠落が発生することなく、インストールが正常に完了するようになりました。
原因
この問題の根本的な原因は、Open Container Initiative(OCI)形式でパッケージされたコンテナイメージの使用でした。この形式は、Cisco IOS® 17.6.4に含まれているDocker Engine(dockerd 18.03.0)ではサポートされていません。OCIパッケージングをサポートしているのは、Docker Engine v19.03.13-ce以降を含むCisco IOS®バージョン17.8.1以降だけです。この非互換性は、Cisco IOS®ソフトウェアをアップグレードすることで解決できます。
関連情報