Je souhaite configurer un proxy HTTP pour Docker ainsi que l’agent de conteneur Amazon Elastic Container Service (Amazon ECS) dans Amazon Linux 2 ou Amazon Linux 2023.
Résolution
Pour configurer un proxy HTTP pour Docker ainsi que l’agent de conteneur Amazon ECS dans Amazon Linux 2 ou Amazon Linux 2023, suivez les étapes suivantes.
Remarque : vous pouvez également définir vos variables d’environnement lors du lancement à l’aide des données utilisateur d’Amazon Elastic Compute Cloud (Amazon EC2) au moyen d’un script de données utilisateur. Pour un script de données utilisateur qui fonctionne sur toutes les versions de Linux, consultez la section Configuration du proxy HTTP pour les instances de conteneurs Linux.
Si vous utilisez Amazon Linux, consultez Comment puis-je configurer un proxy HTTP pour Docker et l’agent de conteneur Amazon ECS dans Amazon Linux ?
Important : l’AMI Amazon Linux (également appelée Amazon Linux 1) a atteint sa fin de vie le 31 décembre 2023. Il est recommandé de mettre à niveau vos applications vers Amazon Linux 2023.
Stockez l’adresse IP et le port du serveur proxy
Pour stocker l’adresse IP et le port du serveur proxy, suivez les étapes suivantes :
- Connectez-vous à l’instance Amazon EC2 avec SSH.
- En tant qu’utilisateur racine, stockez l’adresse IP et le port du serveur proxy pour une utilisation ultérieure dans les variables d’environnement. Par exemple :
export PROXY_SERVER_IP=x.x.x.x
export PROXY_PORT=1234
Configurer un proxy HTTP pour le démon Docker
Pour configurer un proxy HTTP pour le démon Docker, suivez les étapes suivantes :
-
Exécutez les commandes suivantes avec les autorisations sudo :
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
Remarque : HTTP_PROXY est l’adresse de socket (IPaddress:Port) du proxy HTTP utilisé pour connecter l’agent de conteneur ECS à Internet.
Si la variable HTTP_PROXY est définie, vous devez définir la variable NO_PROXY sur 169.254.169.254,169.254.170.2. Ce paramètre filtre les métadonnées de l’instance Amazon EC2, les rôles AWS Identity and Access Management (IAM) pour les tâches, ainsi que le trafic du démon Docker provenant du proxy.
-
Pour recharger les unités en raison de la modification de docker.service sur le disque, exécutez la commande suivante :
systemctl daemon-reload
-
Pour redémarrer Docker, exécutez la commande suivante :
systemctl restart docker.service
Remarque : la commande précédente arrête tous les conteneurs en cours d’exécution, y compris l’agent ecs-agent sur l’instance de conteneur ECS.
-
Pour vérifier les paramètres du proxy HTTP pour Docker, exécutez la commande suivante :
docker info | grep -i proxy
Remarque : la sortie de la commande affiche le proxy HTTP et le proxy HTTPS.
Configurer un proxy HTTP pour l’agent de conteneur
Pour configurer un proxy HTTP pour le démon Docker, suivez les étapes suivantes :
-
Dans votre fichier /etc/ecs/ecs.config existant, incluez la configuration du proxy à l’aide des paramètres de configuration de l’agent HTTP_PROXY and NO_PROXY. Par exemple :
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
-
Pour appliquer les configurations HTTP de l’étape 1 à l’ecs-agent, exécutez la commande suivante :
systemctl restart ecs
Remarque : si vous utilisez une Amazon Machine Image (AMI) optimisée pour Amazon ECS, l’agent de conteneur s’exécute par défaut via ecs-init.
-
Pour vérifier les paramètres du proxy HTTP pour Docker et l’agent de conteneur, exécutez la commande suivante :
docker inspect ecs-agent | grep -i proxy
Remarque : les paramètres du proxy apparaissent dans la sortie de la commande.
Configurer un proxy HTTP pour ecs-init
Pour configurer un proxy HTTP pour ecs-init, procédez comme suit :
-
Exécutez les commandes suivantes avec les autorisations sudo :
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
-
Pour recharger les unités en raison de la modification de docker.service sur le disque, exécutez la commande suivante :
systemctl daemon-reload
-
Pour appliquer les configurations HTTP de l’étape 1 à l’ecs-agent, exécutez la commande suivante :
systemctl restart ecs
Remarque : la configuration de Docker et de l’agent de conteneur affecte uniquement l’instance en cours d’exécution. Pour mettre à jour toutes les instances d’un cluster, créez une configuration de lancement, puis utilisez un groupe Auto Scaling pour lancer de nouvelles instances.
Informations connexes
Mise à jour de l’agent de conteneur Amazon ECS
Démarrage d’instances de conteneurs avec les données utilisateur Amazon EC2