

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.

# Anpassen von Docker-Images für Flink und FluentD
<a name="jobruns-flink-docker-flink-fluentd"></a>

Gehen Sie wie folgt vor, um Docker-Images für Amazon EMR auf EKS mit Apache Flink- oder FluentD-Images anzupassen. Dazu gehören technische Anleitungen zum Abrufen eines Basis-Images, zum Anpassen, Veröffentlichen und Einreichen eines Workloads.

**Topics**
+ [Voraussetzungen](#jobruns-flink-docker-flink-fluentd-prereqs)
+ [Schritt 1: Rufen Sie ein Basis-Image aus der Amazon Elastic Container Registry ab](#jobruns-flink-docker-flink-fluentd-retrieve-base)
+ [Schritt 2: Ein Basis-Image anpassen](#jobruns-flink-docker-flink-fluentd-customize-image)
+ [Schritt 3: Veröffentlichen Sie Ihr benutzerdefiniertes Bild](#jobruns-flink-docker-flink-fluentd-publish-image)
+ [Schritt 4: Senden Sie einen Flink-Workload in Amazon EMR mithilfe eines benutzerdefinierten Images](#jobruns-flink-docker-flink-fluentd-submit-workload)

## Voraussetzungen
<a name="jobruns-flink-docker-flink-fluentd-prereqs"></a>

Bevor Sie Ihr Docker-Image anpassen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:
+ Die Schritte zum [Einrichten des Flink-Kubernetes-Operators für Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-kubernetes-operator-setup.html) auf EKS wurden abgeschlossen.
+ Docker in Ihrer Umgebung installiert. Weitere Informationen finden Sie unter [Docker holen](https://docs.docker.com/get-docker/).

## Schritt 1: Rufen Sie ein Basis-Image aus der Amazon Elastic Container Registry ab
<a name="jobruns-flink-docker-flink-fluentd-retrieve-base"></a>

Das Basis-Image enthält die Amazon EMR-Laufzeit und die Konnektoren, die Sie für den Zugriff auf andere AWS-Services benötigen. Wenn Sie Amazon EMR auf EKS mit Flink Version 6.14.0 oder höher verwenden, können Sie die Basis-Images aus der Amazon ECR Public Gallery abrufen. Durchsuchen Sie die Galerie nach dem Image-Link und laden Sie das Image in Ihren lokalen Workspace. Für die Version Amazon EMR 6.14.0 gibt der folgende `docker pull` Befehl beispielsweise das neueste Standard-Basis-Image zurück. Ersetzen Sie es `emr-6.14.0:latest` durch die gewünschte Release-Version.

```
docker pull public.ecr.aws/emr-on-eks/flink/emr-6.14.0-flink:latest
```

Im Folgenden finden Sie Links zum Flink-Galeriebild und zum Fluentd-Galeriebild:
+ [emr-on-eks/flink/emr-6.14.0-flink](https://gallery.ecr.aws/emr-on-eks/flink/emr-6.14.0-flink)
+ [emr-on-eks/fluentd/emr-6.14.0 (](https://gallery.ecr.aws/emr-on-eks/fluentd/emr-6.14.0)

## Schritt 2: Ein Basis-Image anpassen
<a name="jobruns-flink-docker-flink-fluentd-customize-image"></a>

In den folgenden Schritten wird beschrieben, wie Sie das Basis-Image, das Sie aus Amazon ECR abgerufen haben, anpassen können.

1. Erstellen Sie ein neues `Dockerfile` in Ihrem lokalen Workspace.

1. Bearbeiten Sie den `Dockerfile` und fügen Sie den folgenden Inhalt hinzu. Dabei wird das Container-Image `Dockerfile` verwendet, aus dem Sie abgerufen haben`public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest`.

   ```
   FROM public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest
   USER root
   ### Add customization commands here ####
   USER hadoop:hadoop
   ```

   Verwenden Sie die folgende Konfiguration, wenn Sie verwenden`Fluentd`.

   ```
   FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.12.0:latest
   USER root
   ### Add customization commands here ####
   USER hadoop:hadoop
   ```

1. Fügen Sie Befehle in `Dockerfile` hinzu, um das Basis-Image anzupassen. Der folgende Befehl zeigt, wie Python-Bibliotheken installiert werden.

   ```
   FROM public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest
   USER root
   RUN pip3 install --upgrade boto3 pandas numpy // For python 3
   USER hadoop:hadoop
   ```

1. Führen Sie in demselben Verzeichnis, in dem Sie es erstellt haben`DockerFile`, den folgenden Befehl aus, um das Docker-Image zu erstellen. Das Feld, das Sie hinter dem `-t` Flag angeben, ist Ihr benutzerdefinierter Name für das Image.

   ```
   docker build -t <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
   ```

## Schritt 3: Veröffentlichen Sie Ihr benutzerdefiniertes Bild
<a name="jobruns-flink-docker-flink-fluentd-publish-image"></a>

Sie können das neue Docker-Image jetzt in Ihrer Amazon ECR-Registrierung veröffentlichen.

1. Führen Sie den folgenden Befehl aus, um ein Amazon ECR-Repository zum Speichern Ihres Docker-Images zu erstellen. Geben Sie einen Namen für Ihr Repository ein, z. B. `emr_custom_repo.` Weitere Informationen finden [Sie unter Erstellen eines Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) im Amazon Elastic Container Registry User Guide.

   ```
   aws ecr create-repository \
          --repository-name emr_custom_repo \
          --image-scanning-configuration scanOnPush=true \
          --region <AWS_REGION>
   ```

1. Führen Sie den folgenden Befehl aus, um Ihre Ressourcen zu löschen. Weitere Informationen finden Sie unter [Authentifizieren Sie sich bei Ihrer Standardregistrierung](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) im Amazon Elastic Container Registry User Guide.

   ```
   aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com
   ```

1. Übertragen Sie das Image per Push. Weitere Informationen finden Sie unter [Ein Bild an Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) übertragen im Amazon Elastic Container Registry User Guide.

   ```
   docker push <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
   ```

## Schritt 4: Senden Sie einen Flink-Workload in Amazon EMR mithilfe eines benutzerdefinierten Images
<a name="jobruns-flink-docker-flink-fluentd-submit-workload"></a>

Nehmen Sie die folgenden Änderungen an Ihrer `FlinkDeployment` Spezifikation vor, um ein benutzerdefiniertes Bild zu verwenden. Geben Sie dazu Ihr eigenes Bild in die `spec.image` Zeile Ihrer Bereitstellungsspezifikation ein.

```
apiVersion: flink.apache.org/v1beta1
   kind: FlinkDeployment
   metadata:
     name: basic-example
   spec:
     flinkVersion: v1_18
     image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
     imagePullPolicy: Always
     flinkConfiguration:
           taskmanager.numberOfTaskSlots: "1"
```

Um ein benutzerdefiniertes Image für Ihren Fluentd-Job zu verwenden, geben Sie Ihr eigenes Bild in die `monitoringConfiguration.image` Zeile Ihrer Bereitstellungsspezifikation ein.

```
  monitoringConfiguration:
       image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
       cloudWatchMonitoringConfiguration:
         logGroupName: flink-log-group
         logStreamNamePrefix: custom-fluentd
```