Docker の仮想化
ディスカバリー は Docker Pattern を使用して、Linux ホスト上で実行されている Docker エンジン内の特定のオブジェクトに関するデータを収集します。
ServiceNow® プラットフォームでは Docker リリース 1.11.0 以降のディスカバリーがサポートされています。
必須条件
- ユーザー特権
- 最新のパターン
- ServiceNow Store から最新のディスカバリーとサービスマッピングパターンアプリケーションを展開します。
Docker の制限事項と考慮事項
- 最初の ディスカバリー プロセススキャンでは、コンテナー内のアプリケーションを識別し、正しく分類することができます。ただし、そのアプリケーションを探索するために起動された後続のプローブはコンテナーの内部を確認できず、アプリケーションの詳細を返すことができません。
- ディスカバリー は、アクティブでないコンテナーを含む、検出したすべてのコンテナーをスキャンするので、ディスカバリー の速度が低下する場合があります。これを避けるには、実行されていないコンテナーを削除する必要があります。
- sn_itom_pattern.manifest_digest_image_id プロパティを true に設定してディスカバリーを実行する前に、すべての Docker 画像レコードを削除して、重複する Docker レコードが作成されないようにします。
- コンピューター 1 台につき (物理マシン上と仮想マシン上のいずれであっても) 1 つの Docker エンジンのみが許可されています。
水平ディスカバリー中に ディスカバリー によって収集されるデータ
| テーブルとフィールド | 説明 |
|---|---|
| Docker エンジン [cmdb_ci_docker_engine] | |
| 名前 [name] | Docker エンジンのインスタンスに関する情報を格納します。 |
| OS アーキテクチャ [os_arch] | |
| GIT コミット [git_commit] | |
| ビルド日 [build_date] | |
| バージョン [version] | |
| API バージョン [api_version] | |
| Go バージョン [go_version] | |
| クラスター化 [is_clustered] | |
| 実行中のプロセス [running_process] | |
| 実行中のプロセスのコマンド [running_process_command] | |
| 実行中のプロセスのキーパラメーター [running_process_key_parameters] | |
| Docker イメージ [cmdb_ci_docker_image] | |
| 名前 [name] | Docker イメージのグローバルに一意の表現に関する情報を格納します。 |
| イメージ ID [image_id] | |
| イメージダイジェスト [image_digest] | |
| サイズ (バイト) [size_byte] | |
| 作成されるイメージ [image_created_at] | |
| Docker ローカルイメージ [cmdb_ci_docker_local_image] | |
| 名前 [name] | Docker イメージのローカルインスタンスを格納します。 |
| イメージ ID [image_id] | |
| Docker イメージタグ [cmdb_ci_docker_image_tag] | |
| 名前 [name] | ローカル Docker イメージのタグを格納します。 |
| イメージ ID [image_id] | |
| リポジトリ [repository] | |
| タグ [tag] | |
| Docker コンテナー [cmdb_ci_docker_container] | |
| 名前 [name] | ホストで見つかった Docker コンテナーを格納します。 重複レコードが作成された場合は、ディスカバリーが実行されると重複排除タスクが表示されます。これらのタスクを解決する方法については、ServiceNow® ナレッジベースの記事「Making docker container identifier independent (Docker コンテナ識別子を独立させる) [KB1443042]」を参照してください。 |
| イメージ ID [image_id] | |
| コンテナー ID [container_id] | |
| サイズ (バイト) [size_bytes] | |
| コマンド [command] | |
| コンテナー作成日時 [container_created] | |
| ステータス [status] | |
| テーブルとフィールド | 説明 |
|---|---|
| コンテナーリポジトリ [cmdb_ci_container_repository] | |
| 名前 [name] | コンテナーリポジトリの名前。 |
| コンテナーリポジトリエントリー [cmdb_ci_container_repository_entry] | |
| 名前 [name] | コンテナーリポジトリエントリーの名前 |
| カテゴリ [category] | コンテナーリポジトリエントリーのカテゴリ |
CI 関係
| CI | 関連 | CI |
|---|---|---|
| cmdb_ci_server | Runs::Runs On | cmdb_ci_docker_engine |
| cmdb_ci_docker_engine | Manages::Managed By | cmdb_ci_docker_container |
| cmdb_ci_docker_engine | Manages::Managed By | cmdb_ci_docker_local_image |
cmdb_ci_docker_image |
Instantiates::Instantiated By |
cmdb_ci_docker_container |
cmdb_ci_docker_local_image 注: この関係の方向は、1.0.99 (2023 年 2 月) より前のすべてのストアバージョンでは逆になります。 |
Instantiates::Instantiated By |
cmdb_ci_docker_container |
| cmdb_ci_docker_image_tag | Registered On::Has Registered | cmdb_ci_docker_local_image |
| cmdb_ci_docker_local_image | Instantiates::Instantiated By | cmdb_ci_docker_image |
| CI | 関係 | CI |
|---|---|---|
| Docker イメージ [cmdb_ci_docker_image] | Provisioned From::Provisioned | コンテナーリポジトリエントリー [cmdb_ci_container_repository_entry] |
| コンテナーリポジトリエントリー [cmdb_ci_container_repository_entry] | Hosted on::Hosts | コンテナーリポジトリ [cmdb_ci_container_repository] |
識別、格納、およびホスティングのルール
ディスカバリーはアプリケーションルール識別子を使用して Docker エンジンを検索し、その他のルールを適用して特定の Docker オブジェクトを識別します。
- アプリケーションルール識別子
プロセスの分類中に cmdb_ci_docker_engine 構成アイテム (CI) が作成されます。これに基づいて、ディスカバリーはアプリケーション [cmdb_ci_appl] テーブルのアプリケーションルール識別子を使用して、検出された特定の Docker エンジンを識別します。この ID を確立した後、ディスカバリーは格納ルールとホスティングルールで定義された関係を使用して、そのエンジンに関連する個別の Docker コンポーネント CI を正確に作成および更新します。
- 識別子
名前 テーブル 属性 Docker コンテナ Docker コンテナー [cmdb_ci_docker_container] container_id Docker グローバルイメージ Docker イメージ [cmdb_ci_docker_image] image_id Docker ローカルイメージ Docker ローカルイメージ [cmdb_ci_docker_local_image] image_id Docker イメージタグ Docker イメージタグ [cmdb_ci_docker_image_tag] リポジトリ、タグ - 格納およびホスティングのルール
- Docker ディスカバリーは、これらの格納規則のコレクションを作成または編集するルールとホスティングルールのコレクションを作成または編集するルールを使用して、Docker パターンによって返されるデータから構成アイテム (CI) を作成します。 ディスカバリーは、アプリケーション [cmdb_ci_appl] テーブルとの関係によって Docker エンジンを識別した後、これらのルールを使用して、そのエンジンに接続されている特定の CI を互いの関係から識別します。ディスカバリー はこのようにアプリケーションから下流へ、エンジンから開始してコンポーネントを互いに接続することで、同じ名前または image_id を使用する他の Docker エンジンのコンポーネントに対して重複する CI が作成されないようにしています。
表 : 1. 格納のルール 親 子 関係 Docker ローカルイメージ Docker イメージタグ 登録済み 表 : 2. ホスティング ルール 親 子 関係 Docker コンテナ Docker エンジン 管理担当者 Docker ローカルイメージ Docker エンジン 管理担当者