

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Automatische Identifizierung doppelter Container-Images bei der Migration zu einem Amazon ECR-Repository
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository"></a>

*Rishabh Yadav und Rishi Singla, Amazon Web Services*

## Zusammenfassung
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-summary"></a>

Das Muster bietet eine automatisierte Lösung zur Identifizierung, ob es sich bei Bildern, die in verschiedenen Container-Repositorys gespeichert sind, um Duplikate handelt. Diese Prüfung ist nützlich, wenn Sie planen, Bilder aus anderen Container-Repositorys zu Amazon Elastic Container Registry (Amazon ECR) zu migrieren.

Für grundlegende Informationen beschreibt das Muster auch die Komponenten eines Container-Images, wie z. B. den Image-Digest, das Manifest und die Tags. Wenn Sie eine Migration zu Amazon ECR planen, entscheiden Sie sich möglicherweise dafür, Ihre Container-Images zwischen den Container-Registern zu synchronisieren, indem Sie die Digests der Images vergleichen. Bevor Sie Ihre Container-Images migrieren, müssen Sie überprüfen, ob diese Images bereits im Amazon ECR-Repository vorhanden sind, um Duplikate zu vermeiden. Es kann jedoch schwierig sein, Duplikate durch den Vergleich von Image-Digests zu erkennen, und dies kann zu Problemen in der ersten Migrationsphase führen.  Dieses Muster vergleicht die Digests zweier ähnlicher Bilder, die in unterschiedlichen Container-Registern gespeichert sind, und erklärt, warum die Digests variieren, damit Sie Bilder genau vergleichen können.

## Voraussetzungen und Einschränkungen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-prereqs"></a>
+ Ein aktiver AWS-Konto
+ Zugriff auf das [öffentliche Amazon ECR-Register](https://gallery.ecr.aws/)
+ Vertrautheit mit den folgenden Themen: AWS-Services
  + [AWS CodeCommit](https://aws.amazon.com/codecommit/)
  + [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
  + [AWS CodeBuild](https://aws.amazon.com/codebuild/)
  + [AWS Identity and Access Management (ICH BIN)](https://aws.amazon.com/iam/)
  + [Amazon Simple Storage Service (Amazon-S3)](https://aws.amazon.com/s3/)
+ Konfigurierte CodeCommit Anmeldeinformationen (siehe [Anweisungen](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html))

## Architektur
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-architecture"></a>

**Container-Image-Komponenten**

Das folgende Diagramm zeigt einige der Komponenten eines Container-Images. Diese Komponenten werden im Anschluss an das Diagramm beschrieben.

![Manifest, Konfiguration, Dateisystemschichten und Digests.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/71b99c67-a934-4f94-8af8-2a8431fb91f5.png)


**Begriffe und Definitionen**

Die folgenden Begriffe sind in der [Image Specification der Open Container Initiative (OCI)](https://github.com/opencontainers/image-spec/blob/main/spec.md) definiert.
+ **Registry:** Ein Dienst für die Speicherung und Verwaltung von Bildern.
+ **Client:** Ein Tool, das mit Registern kommuniziert und mit lokalen Bildern arbeitet.
+ **Push:** Der Prozess zum Hochladen von Bildern in eine Registry.
+ **Pull:** Der Prozess zum Herunterladen von Bildern aus einer Registry.
+ **Blob:** Die binäre Form von Inhalten, die in einer Registry gespeichert werden und mit einem Digest adressiert werden können.
+ **Index:** Ein Konstrukt, das mehrere Image-Manifeste für verschiedene Computerplattformen (wie x86-64 oder ARM 64-Bit) oder Medientypen identifiziert. Weitere Informationen finden Sie in der [OCI Image Index Specification](https://github.com/opencontainers/image-spec/blob/main/image-index.md).
+ **Manifest:** Ein JSON-Dokument, das ein Bild oder Artefakt definiert, das über den Endpunkt des Manifests hochgeladen wird. Ein Manifest kann mithilfe von Deskriptoren auf andere Blobs in einem Repository verweisen. Weitere Informationen finden Sie in der [OCI](https://github.com/opencontainers/image-spec/blob/main/manifest.md) Image Manifest Specification.
+ **Dateisystemebene:** Systembibliotheken und andere Abhängigkeiten für ein Bild.
+ **Konfiguration:** Ein Blob, der Artefakt-Metadaten enthält und auf den im Manifest verwiesen wird. Weitere Informationen finden Sie in der [OCI-Image-Konfigurationsspezifikation](https://github.com/opencontainers/image-spec/blob/main/config.md).
+ **Objekt oder Artefakt:** Ein konzeptionelles Inhaltselement, das als Blob gespeichert und einem zugehörigen Manifest mit einer Konfiguration zugeordnet ist.
+ **Zusammenfassung:** Eine eindeutige Kennung, die aus einem kryptografischen Hash des Inhalts eines Manifests erstellt wird. Der Image-Digest hilft dabei, ein unveränderliches Container-Image eindeutig zu identifizieren. Wenn Sie ein Image mithilfe des zugehörigen Digest abrufen, laden Sie jedes Mal dasselbe Image auf ein beliebiges Betriebssystem oder eine beliebige Architektur herunter. Weitere Informationen finden Sie in der [OCI-Image-Spezifikation](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).
+ **Tag:** Ein für Menschen lesbarer Manifestbezeichner. Im Vergleich zu Image-Digests, die unveränderlich sind, sind Tags dynamisch. Ein Tag, der auf ein Bild verweist, kann sich ändern und von einem Bild zum anderen verschoben werden, obwohl der zugrunde liegende Bildauszug derselbe bleibt.

**Zielarchitektur**

Das folgende Diagramm zeigt die allgemeine Architektur der Lösung, die durch dieses Muster bereitgestellt wird, um doppelte Container-Images zu identifizieren, indem Bilder verglichen werden, die in Amazon ECR und privaten Repositorys gespeichert sind.

![Automatische Erkennung von Duplikaten mit und. CodePipeline CodeBuild](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/5ee62bc8-db8d-48a3-9e79-f3392b6e9bf7.png)


## Tools
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-tools"></a>

**AWS-Services**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.

**Kode**

Der Code für dieses Muster ist im GitHub Repository verfügbar.**** [Automatisierte Lösung zur Identifizierung doppelter Container-Images zwischen Repositorys](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/).

## Best Practices
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-best-practices"></a>
+ [CloudFormation bewährte Verfahren](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html)
+ [AWS CodePipeline bewährte Verfahren](https://docs.aws.amazon.com/codepipeline/latest/userguide/best-practices.html)

## Epen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-epics"></a>

### Container-Images aus öffentlichen und privaten Amazon ECR-Repositorys abrufen
<a name="pull-container-images-from-ecr-public-and-private-repositories"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie ein Bild aus dem öffentlichen Amazon ECR-Repository ab. | Führen Sie im Terminal den folgenden Befehl aus, um das Bild `amazonlinux` aus dem öffentlichen Amazon ECR-Repository abzurufen.<pre>$~ % docker pull public.ecr.aws/amazonlinux/amazonlinux:2018.03 </pre><br />Wenn das Bild auf Ihren lokalen Computer abgerufen wurde, sehen Sie den folgenden Pull-Digest, der den Bildindex darstellt.<pre>2018.03: Pulling from amazonlinux/amazonlinux<br />4ddc0f8d367f: Pull complete <br /><br />Digest: sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5<br /><br />Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />public.ecr.aws/amazonlinux/amazonlinux:2018.03</pre> | App-Entwickler, AWS DevOps, AWS-Administrator | 
| Pushen Sie das Bild in ein privates Amazon ECR-Repository. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps, App-Entwickler | 
| Rufen Sie dasselbe Bild aus dem privaten Amazon ECR-Repository ab. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | App-Entwickler, AWS DevOps, AWS-Administrator | 

### Vergleichen Sie die Image-Manifeste
<a name="compare-the-image-manifests"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie das Manifest des Bilds, das im öffentlichen Amazon ECR-Repository gespeichert ist. | Führen Sie im Terminal den folgenden Befehl aus, um das Manifest des Images `public.ecr.aws/amazonlinux/amazonlinux:2018.03` aus dem öffentlichen Amazon ECR-Repository abzurufen.<pre>$~ % docker manifest inspect public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />{<br />   "schemaVersion": 2,<br />   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",<br />   "manifests": [<br />      {<br />         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />         "size": 529,<br />         "digest": "sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",<br />         "platform": {<br />            "architecture": "amd64",<br />            "os": "linux"<br />         }<br />      }<br />   ]<br />}</pre> | AWS-Administrator, AWS DevOps, App-Entwickler | 
| Suchen Sie das Manifest des Images, das im privaten Amazon ECR-Repository gespeichert ist. | Führen Sie im Terminal den folgenden Befehl aus, um das Manifest des Images `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest` aus dem privaten Amazon ECR-Repository abzurufen.<pre>$~ % docker manifest inspect <account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest                                          <br />{<br />	"schemaVersion": 2,<br />	"mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />	"config": {<br />		"mediaType": "application/vnd.docker.container.image.v1+json",<br />		"size": 1477,<br />		"digest": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68"<br />	},<br />	"layers": [<br />		{<br />			"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",<br />			"size": 62267075,<br />			"digest": "sha256:4ddc0f8d367f424871a060e2067749f32bd36a91085e714dcb159952f2d71453"<br />		}<br />	]<br />}</pre> | AWS DevOps, AWS-Systemadministrator, App-Entwickler | 
| Vergleichen Sie den von Docker abgerufenen Digest mit dem Manifest-Digest für das Image im privaten Amazon ECR-Repository. | Eine weitere Frage ist, warum sich der vom Befehl **docker pull** bereitgestellte Digest vom Digest des Manifests für das Image unterscheidet. `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest`<br />Der für **Docker Pull** verwendete Digest stellt den Digest des Image-Manifests dar, das in einer Registrierung gespeichert ist. Dieser Digest wird als Stamm einer Hash-Kette betrachtet, da das Manifest den Hash des Inhalts enthält, der heruntergeladen und in Docker importiert wird.<br />Die in Docker verwendete Image-ID finden Sie in diesem Manifest als. `config.digest` Dies stellt die Image-Konfiguration dar, die Docker verwendet. Man könnte also sagen, dass das Manifest der Umschlag ist und das Bild der Inhalt des Umschlags. Der Manifest-Digest unterscheidet sich immer von der Bild-ID. Ein bestimmtes Manifest sollte jedoch immer dieselbe Image-ID erzeugen. Da es sich bei dem Manifest-Digest um eine Hash-Kette handelt, können wir nicht garantieren, dass sie für eine bestimmte Image-ID immer dieselbe ist. In den meisten Fällen erzeugt es denselben Digest, obwohl Docker dies nicht garantieren kann. Der mögliche Unterschied im Manifest-Digest ist darauf zurückzuführen, dass Docker die mit gzip komprimierten Blobs nicht lokal speichert. Daher kann das Exportieren von Ebenen zu einem anderen Digest führen, obwohl der unkomprimierte Inhalt derselbe bleibt. Die Bild-ID überprüft, ob der unkomprimierte Inhalt identisch ist. Das heißt, die Bild-ID ist jetzt eine inhaltsadressierbare Kennung (). `chainID`<br />Um diese Informationen zu bestätigen, können Sie die Ausgabe des Befehls **docker inspect** in den öffentlichen und privaten Repositorys von Amazon ECR vergleichen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Die Ergebnisse bestätigen, dass beide Bilder denselben Bild-ID-Digest und Ebenen-Digest haben.<br />ID: `f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68`<br />Schichten: `d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2`<br />Darüber hinaus basieren die Digests auf den Bytes des Objekts, das lokal verwaltet wird (die lokale Datei ist ein Tar der Container-Image-Ebene), oder des Blobs, der an den Registrierungsserver übertragen wird. Wenn Sie das Blob jedoch in eine Registrierung übertragen, wird das Tar komprimiert und der Digest wird in der komprimierten TAR-Datei berechnet. Daher ist der Unterschied im **Docker Pull** Digest-Wert auf die Komprimierung zurückzuführen, die auf Registrierungsebene (Amazon ECR privat oder öffentlich) angewendet wird.Diese Erklärung bezieht sich speziell auf die Verwendung eines Docker-Clients. Sie werden dieses Verhalten bei anderen Clients wie **nerdctl** oder **Finch** nicht feststellen, da sie das Bild bei Push- und Pull-Vorgängen nicht automatisch komprimieren. | AWS DevOps, AWS-Systemadministrator, App-Entwickler | 

### Identifizieren Sie automatisch doppelte Bilder zwischen öffentlichen und privaten Amazon ECR-Repositorys
<a name="automatically-identify-duplicate-images-between-ecr-public-and-private-repositories"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das Github-Repository für dieses Muster in einen lokalen Ordner:<pre>$git clone https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories</pre> | AWS-Administrator, AWS DevOps | 
| Richten Sie eine CI/CD Pipeline ein. | Das GitHub Repository enthält eine `.yaml` Datei, die einen CloudFormation Stack erstellt, in dem eine Pipeline eingerichtet werden kann AWS CodePipeline.[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Die Pipeline wird in zwei Schritten (CodeCommit und CodeBuild, wie im Architekturdiagramm dargestellt) eingerichtet, um Bilder im privaten Repository zu identifizieren, die auch im öffentlichen Repository vorhanden sind. Die Pipeline ist mit den folgenden Ressourcen konfiguriert:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps | 
| Füllen Sie das CodeCommit Repository aus. | Gehen Sie wie folgt vor, um das CodeCommit Repository zu füllen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps | 
| Bereinigen Sie. | Um future Gebühren zu vermeiden, löschen Sie die Ressourcen, indem Sie die folgenden Schritte ausführen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator | 

## Fehlerbehebung
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Wenn Sie versuchen, ein CodeCommit Repository über das Terminal oder die Befehlszeile zu pushen, abzurufen oder auf andere Weise mit ihm zu interagieren, werden Sie aufgefordert, einen Benutzernamen und ein Passwort einzugeben, und Sie müssen die Git-Anmeldeinformationen für Ihren IAM-Benutzer angeben. | Die häufigsten Ursachen für diesen Fehler sind die folgenden:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Je nach Ihrem Betriebssystem und der lokalen Umgebung müssen Sie möglicherweise einen Anmeldeinformationsmanager installieren, den in Ihr Betriebssystem integrierten Anmeldeinformationsmanager konfigurieren oder Ihre lokale Umgebung so anpassen, dass Anmeldeinformationen gespeichert werden. Wenn auf Ihrem Computer beispielsweise macOS ausgeführt wird, können Sie das Keychain Access-Hilfsprogramm verwenden, um Ihre Anmeldeinformationen zu speichern. Wenn Sie einen Windows-Computer nutzen, können Sie das Git-Dienstprogramm zur Verwaltung von Anmeldeinformationen (Git Credential Manager) verwenden, das zusammen mit Git für Windows installiert wird. Weitere Informationen finden Sie in der CodeCommit Dokumentation unter [Einrichtung für HTTPS-Benutzer mit Git-Anmeldeinformationen](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) und unter [Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage) in der Git-Dokumentation. | 
| Wenn Sie ein Bild in das Amazon ECR-Repository übertragen, treten Fehler vom Typ HTTP 403 oder „no basic auth credentials“ auf. | **Diese Fehlermeldungen können beim Befehl **docker push oder docker** **pull** auftreten, auch wenn Sie sich erfolgreich mit dem Befehl aws ecr bei Docker authentifiziert haben. get-login-password** Bekannte Ursachen sind:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | 

## Zugehörige Ressourcen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-resources"></a>
+ [Automatisierte Lösung zur Identifizierung doppelter Container-Images zwischen Repositorys](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/) (GitHub Repository)
+ [Öffentliche Galerie Amazon ECR](https://gallery.ecr.aws/)
+ [Private Bilder in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html) (Amazon ECR-Dokumentation)
+ [AWS::CodePipeline::Pipeline Ressource (Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html))CloudFormation 
+ [Spezifikation des OCI-Bildformats](https://github.com/opencontainers/image-spec/blob/main/spec.md)

## Zusätzliche Informationen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-additional"></a>

**Ausgabe der Docker-Inspektion für Bilder im öffentlichen Amazon ECR-Repository**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```

**Ausgabe der Docker-Inspektion für Bilder im privaten Amazon ECR-Repository**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```