Direkt zum Inhalt

Wie richte ich einen HTTP-Proxy für Docker und den Amazon ECS-Container-Agenten in Amazon Linux 2 oder Amazon Linux 2023 ein?

Lesedauer: 4 Minute
0

Ich möchte einen HTTP-Proxy für Docker und den Amazon Elastic Container Service (Amazon ECS)-Container-Agenten in Amazon Linux 2 oder Amazon Linux 2023 einrichten.

Lösung

Gehe wie folgt vor, um einen HTTP-Proxy für Docker und den Amazon ECS-Container-Agenten in Amazon Linux 2 oder Amazon Linux 2023 einzurichten.

Hinweis: Du kannst die Umgebungsvariablen auch beim Start mithilfe von Amazon Elastic Compute Cloud (Amazon EC2)-Benutzerdaten mit einem Benutzerdatenskript festlegen. Ein Benutzerdatenskript, das auf allen Versionen von Linux funktioniert, findest du unter HTTP-Proxykonfiguration für Linux-Container-Instances.

Wenn du Amazon Linux verwendest, findest du weitere Informationen unter Wie richte ich einen HTTP-Proxy für Docker und den Amazon ECS-Container-Agenten in Amazon Linux ein?

Wichtig: Das Amazon Linux AMI (auch Amazon Linux 1 genannt) erreichte sein Lebensende am 31. Dezember 2023. Es ist eine bewährte Methode, die Anwendungen auf Amazon Linux 2023 zu aktualisieren.

Die IP-Adresse und den Proxy-Server-Port speichern

Gehe wie folgt vor, um die IP-Adresse und den Proxy-Server-Port zu speichern:

  1. Stelle mithilfe von SSH eine Verbindung zu der Amazon EC2-Instance her.
  2. Speichere als Root-Benutzer die IP-Adresse und den Port des Proxyservers für die spätere Verwendung in Umgebungsvariablen. Zum Beispiel:
    export PROXY_SERVER_IP=x.x.x.x
    export PROXY_PORT=1234

Einen HTTP-Proxy für den Docker-Daemon einrichten

Gehe wie folgt vor, um einen HTTP-Proxy für den Docker-Daemon einzurichten:

  1. Führe die folgenden Befehle mit sudo-Berechtigungen aus:

    mkdir -p /etc/systemd/system/docker.service.d
    cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
    [Service]
    Environment="HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT"
    Environment="HTTPS_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT"
    Environment="NO_PROXY=169.254.169.254,169.254.170.2"
    EOF

    Hinweis: HTTP_PROXY ist die Socket-Adresse (IPaddress:Port) des HTTP-Proxys, der verwendet wird, um den ECS-Container-Agenten mit dem Internet zu verbinden.

    Wenn die Variable HTTP_PROXY gesetzt ist, musst du die Variable NO_PROXY auf 169.254.169.254,169.254.170.2 setzen. Diese Einstellung filtert Amazon EC2-Instance-Metadaten, AWS Identity and Access Management (IAM)-Rollen für Aufgaben und den Docker-Daemon-Datenverkehr vom Proxy.

  2. Führe den folgenden Befehl aus, um Einheiten neu zu laden, weil sich docker.service auf der Festplatte geändert hat:

    systemctl daemon-reload
  3. Führe den folgenden Befehl aus, um Docker neu zu starten:

    systemctl restart docker.service

    Hinweis: Der vorherige Befehl stoppt alle laufenden Container, einschließlich des ecs-agent auf der ECS-Container-Instance.

  4. Führe den folgenden Befehl aus, um die HTTP-Proxyeinstellungen für Docker zu überprüfen:

    docker info | grep -i proxy

    Hinweis: Die Befehlsausgabe zeigt den HTTP-Proxy und den HTTPS-Proxy.

Einen HTTP-Proxy für den Container-Agenten einrichten

Gehe wie folgt vor, um einen HTTP-Proxy für den Docker-Daemon einzurichten:

  1. Füge in der vorhandenen Datei /etc/ecs/ecs.config die Proxykonfiguration mit den Agentenkonfigurationsparametern HTTP_PROXY und NO_PROXY ein. Zum Beispiel:

    cat <<EOF > /etc/ecs/ecs.config
    HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT
    NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock
    EOF
  2. Führe den folgenden Befehl aus, um die HTTP-Konfigurationen aus Schritt 1 auf den ecs-agent anzuwenden:

    systemctl restart ecs

    Hinweis: Wenn du ein für Amazon ECS optimiertes Amazon Machine Image (AMI) verwendest, läuft der Container-Agent standardmäßig über ecs-init.

  3. Führe den folgenden Befehl aus, um die HTTP-Proxyeinstellungen für Docker und den Container-Agenten zu überprüfen:

    docker inspect ecs-agent | grep -i proxy

    Hinweis: Die Proxyeinstellungen werden in der Befehlsausgabe angezeigt.

Einen HTTP-Proxy für ecs-init einrichten

Gehe wie folgt vor, um einen HTTP-Proxy für ecs-init einzurichten:

  1. Führe die folgenden Befehle mit sudo-Berechtigungen aus:

    mkdir -p /etc/systemd/system/ecs.service.d
    cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf
    [Service]
    Environment="HTTPS_PROXY=$PROXY_SERVER_IP:$PROXY_PORT/"
    Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"
    EOF
  2. Führe den folgenden Befehl aus, um Einheiten neu zu laden, weil sich docker.service auf der Festplatte geändert hat:

    systemctl daemon-reload
  3. Führe den folgenden Befehl aus, um die HTTP-Konfigurationen aus Schritt 1 auf den ecs-agent anzuwenden:

    systemctl restart ecs

    Hinweis: Die Konfiguration sowohl für Docker als auch für den Container-Agenten wirkt sich nur auf die aktuell laufende Instance aus. Um alle Instances in einem Cluster zu aktualisieren, erstelle eine Startkonfiguration und verwende dann eine Auto-Scaling-Gruppe, um neue Instances zu starten.

Ähnliche Informationen

Aktualisierung des Amazon ECS-Container-Agenten

Bootstrapping von Container-Instances mit Amazon EC2-Benutzerdaten

AWS OFFICIALAktualisiert vor 2 Jahren