

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.

# Vorbereiten Ihres Docker-Images für die Bereitstellung auf Elastic Beanstalk
<a name="single-container-docker-configuration"></a>

In diesem Abschnitt wird beschrieben, wie Sie Ihr Docker-Image für die Bereitstellung auf Elastic Beanstalk vorbereiten, wobei entweder der *Docker Running oder der Platform Branches läuft AL2 *. AL2023 Welche Konfigurationsdateien Sie benötigen, hängt davon ab, ob Ihre Images lokal oder remote sind und ob Sie Docker Compose verwenden.

**Anmerkung**  
 Ein Beispiel für ein Verfahren, mit dem eine Docker-Umgebung gestartet wird, finden Sie im [QuickStart für Docker](docker-quickstart.md) Thema.

**Topics**
+ [Verwaltung Ihrer Bilder mit Docker Compose in Elastic Beanstalk](#single-container-docker-configuration-dc)
+ [Verwaltung von Bildern ohne Docker Compose in Elastic Beanstalk](#single-container-docker-configuration.no-compose)
+ [Erstellen benutzerdefinierter Images mit einer Dockerfile-Datei](#single-container-docker-configuration.dockerfile)

## Verwaltung Ihrer Bilder mit Docker Compose in Elastic Beanstalk
<a name="single-container-docker-configuration-dc"></a>

Sie können Docker Compose verwenden, um verschiedene Dienste in einer YAML-Datei zu verwalten. Weitere Informationen zu Docker Compose finden Sie unter [Warum Compose verwenden?](https://docs.docker.com/compose/intro/features-uses/) auf der Docker-Website.
+ Erstellen Sie einen `docker-compose.yml`. Diese Datei ist erforderlich, wenn Sie Docker Compose verwenden, um Ihre Anwendung mit Elastic Beanstalk zu verwalten. Wenn all Ihre Deployments aus Images in öffentlichen Repositorys stammen, sind keine weiteren Konfigurationsdateien erforderlich. Wenn sich die Quell-Images Ihrer Bereitstellung in einem privaten Repository befinden, müssen Sie einige zusätzliche Konfigurationen vornehmen. Weitere Informationen finden Sie unter [Verwenden von Bildern aus einem privaten Repository](docker-configuration.remote-repo.md). Weitere Informationen zur `docker-compose.yml`-Datei finden Sie auf der Docker-Website in der [Referenz zu Compose-Dateien](https://docs.docker.com/compose/compose-file/).
+  Die `Dockerfile` ist optional. Erstellen Sie eines, wenn Sie Elastic Beanstalk benötigen, um ein lokales benutzerdefiniertes Image zu erstellen und auszuführen. Weitere Informationen zur `Dockerfile`-Datei finden Sie auf der Docker-Website in der [Dockerfile-Referenz](https://docs.docker.com/engine/reference/builder/).
+  Möglicherweise müssen Sie eine `.zip` Datei erstellen. Wenn Sie nur eine `Dockerfile` Datei für die Bereitstellung Ihrer Anwendung verwenden, müssen Sie keine erstellen. Wenn Sie zusätzliche Konfigurationsdateien verwenden, muss die ZIP-Datei die `docker-compose.yml` Datei`Dockerfile`, Ihre Anwendungsdateien und alle Abhängigkeiten von Anwendungsdateien enthalten. Die `Dockerfile` und die `docker-compose.yml` müssen sich im Stammverzeichnis oder auf der obersten Ebene des ZIP-Archivs befinden. Wenn Sie die EB-CLI verwenden, um Ihre Anwendung bereitzustellen, erstellt sie eine ZIP-Datei für Sie.

Weitere Informationen zu Docker Compose und zur Installation von Docker Compose finden Sie auf den Docker-Websites [Overview of Docker Compose](https://docs.docker.com/compose/) und [Install Docker Compose](https://docs.docker.com/compose/install/).

## Verwaltung von Bildern ohne Docker Compose in Elastic Beanstalk
<a name="single-container-docker-configuration.no-compose"></a>

Wenn Sie Docker Compose nicht zur Verwaltung Ihrer Docker-Images verwenden, müssen Sie eine`Dockerfile`, eine Datei oder beides konfigurieren. `Dockerrun.aws.json`
+ Erstellen Sie ein`Dockerfile`, um Elastic Beanstalk ein benutzerdefiniertes Image erstellen und lokal ausführen zu lassen.
+ Erstellen Sie eine `Dockerrun.aws.json v1`-Datei, um ein Docker-Image aus einem gehosteten Repository für Elastic Beanstalk bereitzustellen.
+ Möglicherweise müssen Sie eine `.zip` Datei erstellen. Wenn Sie *nur eine* der beiden Dateien, die `Dockerfile` oder die`Dockerrun.aws.json`, verwenden, müssen Sie keine ZIP-Datei erstellen. Wenn Sie beide Dateien verwenden, benötigen Sie eine ZIP-Datei. Die ZIP-Datei muss sowohl das als auch das enthalten`Dockerrun.aws.json`, zusammen mit der Datei, die Ihre Anwendungsdateien `Dockerfile` und alle Abhängigkeiten von Anwendungsdateien enthält. Wenn Sie die EB CLI verwenden, um Ihre Anwendung bereitzustellen, wird automatisch eine `.zip`-Datei erstellt.

### `Dockerrun.aws.json`v1-Konfigurationsdatei
<a name="single-container-docker-configuration.dockerrun"></a>

Eine `Dockerrun.aws.json`-Datei beschreibt, wie ein Remote-Docker-Image als Elastic Beanstalk-Anwendung bereitgestellt wird. Diese JSON-Datei ist spezifisch für Elastic Beanstalk. Wenn Ihre Anwendung auf einem Bild ausgeführt, das in einem gehosteten Repository verfügbar ist, können Sie das Image in einer `Dockerrun.aws.json v1`-Datei angeben und die `Dockerfile` auslassen.

**`Dockerrun.aws.json`-Versionen**  
 Der `AWSEBDockerrunVersion`-Parameter gibt die Version der `Dockerrun.aws.json`-Datei an.  
Der Docker AL2 und die AL2023 Plattformen verwenden die folgenden Versionen der Datei.  
`Dockerrun.aws.json v3`— Umgebungen, die Docker Compose verwenden.
`Dockerrun.aws.json v1`— Umgebungen, die Docker Compose nicht verwenden.
*ECS, das auf Amazon Linux 2 ausgeführt* wird, und *ECS, das auf läuft*, AL2023 verwendet die `Dockerrun.aws.json v2` Datei. Die ausgemusterte Plattform *ECS-The Multicontainer Docker Amazon Linux AMI (AL1)* verwendete ebenfalls dieselbe Version.



#### Dockerrun.aws.json-v1
<a name="single-container-docker-configuration.dockerrun.awsjson"></a>

Zu den gültigen Schlüsseln und Werten für die `Dockerrun.aws.json v1`-Datei zählen unter anderem folgende Vorgänge:

**AWSEBDockerrunVersion**  
(Erforderlich) Geben Sie die Versionsnummer an, `1` wenn Sie Docker Compose nicht zur Verwaltung Ihres Images verwenden.

**Authentifizierung**  
(Nur erforderlich für private Repositorys) Gibt das Amazon S3-Objekt an, in dem die `.dockercfg`-Datei gespeichert ist.  
Weitere Informationen finden Sie [Authentifizierung mit Image-RepositorysBenutzen AWS Secrets Manager](docker-configuration.remote-repo.md#docker-configuration.remote-repo.dockerrun-aws) *unter Verwenden von Bildern aus einem privaten Repository* weiter unten in diesem Kapitel.

**Image**  
Gibt das Docker-Basis-Image auf einem vorhandenen Docker-Repository an, aus dem Sie einen Docker-Container erstellt haben. Geben Sie den Wert des **Namensschlüssels** im Format *<organization>/<image name>* für Bilder auf Docker Hub oder *<site>/<organization name>/<image name>* für andere Websites an.   
Wenn Sie ein Image in der `Dockerrun.aws.json`-Datei angeben, wird `docker pull` von jeder Instance Ihrer Elastic Beanstalk-Umgebung ausgeführt, um das Image auszuführen. Sie können optional den **Update**-Schlüssel einschließen. Der Standardwert ist `true`. Er weist Elastic Beanstalk an, das Repository zu prüfen, Updates auf das Image abzurufen und alle zwischengespeicherten Images zu überschreiben.  
Geben Sie, wenn Sie eine `Dockerfile` verwenden, den **Image**-Schlüssel in der `Dockerrun.aws.json`-Datei nicht an. Elastic Beanstalk erstellt und verwendet immer das Image, das in `Dockerfile` Beschrieben ist, wenn eines vorhanden ist.

**Ports**  
(Erforderlich, wenn Sie den **Image-Schlüssel** angeben) Listet die Ports auf, die auf dem Docker-Container bereitgestellt werden sollen. Elastic Beanstalk verwendet den **ContainerPort**Wert, um den Docker-Container mit dem Reverse-Proxy zu verbinden, der auf dem Host ausgeführt wird.  
Sie können mehrere Container-Ports angeben, von Elastic Beanstalk wird aber nur der erste Port verwendet. Dieser Port wird verwendet, um Ihren Container mit dem Reverse-Proxy des Hosts zu verbinden und Anforderungen aus dem öffentlichen Internet weiterzuleiten. **Wenn Sie a verwenden`Dockerfile`, sollte der erste **ContainerPort**Wert mit dem ersten Eintrag in der 's-EXPOSE-Liste `Dockerfile` übereinstimmen.**   
Optional können Sie eine Liste von Anschlüssen in angeben **HostPort**. **HostPort**Einträge geben die Host-Ports an, denen **ContainerPort**Werte zugeordnet sind. Wenn Sie keinen **HostPort**Wert angeben, wird standardmäßig der **ContainerPort**Wert verwendet.   

```
{
  "Image": {
    "Name": "image-name"
  },
  "Ports": [
    {
      "ContainerPort": 8080,
      "HostPort": 8000
    }
  ]
}
```

****Datenträger****  
Ordnen Sie Volumes von einer EC2-Instance Ihrem Docker-Container zu. Geben Sie ein oder mehrere Volume-Arrays für die Zuordnung an.  

```
{
  "Volumes": [
    {
      "HostDirectory": "/path/inside/host",
      "ContainerDirectory": "/path/inside/container"
    }
  ]
...
```

****Protokollierung****  
Geben Sie das Verzeichnis im Container an, in das Ihre Anwendung Protokolle schreibt. Elastic Beanstalk lädt alle Protokolle in dieses Verzeichnis in Amazon S3 hoch, wenn Sie Protokollfragmente oder Bundle-Protokolle anfordern. Wenn Sie Protokolle zu einem Ordner mit dem Namen `rotated` in diesem Verzeichnis rotieren, können Sie auch Elastic Beanstalk so konfigurieren, dass rotierte Protokolle für eine dauerhafte Speicherung in Amazon S3 hochgeladen werden. Weitere Informationen finden Sie unter [Protokolle von Amazon EC2-Instances in Ihrer Elastic Beanstalk Umgebung anzeigen](using-features.logging.md).

**Befehl**  
Geben Sie einen Befehl an, der im Container ausgeführt werden soll. Wenn Sie einen **Entrypoint (Eintrittspunkt)** angeben, dann wird **Command (Befehl)** als Argument für **Entrypoint (Eintrittspunkt)** hinzugefügt. Weitere Informationen finden Sie unter [CMD](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options) in der Docker-Dokumentation.

**Eintrittspunkt**  
Geben Sie einen Standard-Befehl an, der ausgeführt werden soll, wenn der Container gestartet wird. Weitere Informationen finden Sie unter [EINTRITTSPUNKT](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options) in der Docker-Dokumentation.

Der folgende Codeausschnitt ist ein Beispiel, das die Syntax der `Dockerrun.aws.json`-Datei für einen einzelnen Container.

```
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "janedoe/image",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "1234"
    }
  ],
  "Volumes": [
    {
      "HostDirectory": "/var/app/mydb",
      "ContainerDirectory": "/etc/mysql"
    }
  ],
  "Logging": "/var/log/nginx",
  "Entrypoint": "/app/bin/myapp",
  "Command": "--argument"
}>
```

Sie können Elastic Beanstalk nur mit der `Dockerrun.aws.json`-Datei oder mit einem `.zip`-Archiv bereitstellen, das sowohl die `Dockerrun.aws.json`-Datei als auch die `Dockerfile`-Datei enthält. Wenn Sie beide Dateien bereitstellen, beschreibt die `Dockerfile` das Docker-Image und die Datei `Dockerrun.aws.json` bietet zusätzliche Informationen für die Bereitstellung. Einzelheiten dazu finden Sie weiter unten in diesem Abschnitt.

**Anmerkung**  
Die beiden Dateien müssen sich im Stammverzeichnis oder im oberste Level des `.zip`-Archivs befinden. Erstellen Sie kein Archiv aus einem Verzeichnis, das die Dateien enthält. Navigieren Sie stattdessen zu dem Verzeichnis und erstellen Sie das Archiv dort.  
Wenn Sie die beide Dateien bereitstellen, geben Sie kein Image in der Datei `Dockerrun.aws.json` an. Elastic Beanstalk erstellt und verwendet das Image, das in `Dockerfile` beschrieben wird, und ignoriert das in der Datei `Dockerrun.aws.json` angegebene Image.

## Erstellen benutzerdefinierter Images mit einer Dockerfile-Datei
<a name="single-container-docker-configuration.dockerfile"></a>

Falls Sie noch nicht über ein in einem Repository gehostetes Image verfügen, müssen Sie eine `Dockerfile` erstellen.

Der folgende Codeausschnitt ist ein Beispiel für die `Dockerfile`. Wenn Sie die Anweisungen in [QuickStart für Docker](docker-quickstart.md) befolgen, können Sie die `Dockerfile` wie beschrieben hochladen. Elastic Beanstalk führt das Spiel 2048 aus, wenn Sie diese verwende `Dockerfile`.

Weitere Informationen zu den Anweisungen, die Sie in die `Dockerfile` einschließen können, finden Sie unter [Dockerfile-Referenz](https://docs.docker.com/engine/reference/builder) auf der Docker-Website.

```
FROM ubuntu:12.04

RUN apt-get update
RUN apt-get install -y nginx zip curl

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip

EXPOSE 80

CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
```

**Anmerkung**  
Sie können mehrstufige Builds aus einer einzigen Dockerfile ausführen, um kleinere Images mit einer signifikanten Verringerung der Komplexität zu erzeugen. Weitere Informationen finden Sie unter [Verwenden mehrstufiger Builds](https://docs.docker.com/develop/develop-images/multistage-build/) auf der Docker-Dokumentationswebsite.