Quiero configurar un proxy HTTP para Docker y el agente de contenedores de Amazon Elastic Container Service (Amazon ECS) en Amazon Linux 2 o Amazon Linux 2023.
Resolución
Para configurar un proxy HTTP para Docker y el agente de contenedores de Amazon ECS en Amazon Linux 2 o Amazon Linux 2023, complete estos pasos.
Nota: También puede configurar las variables de entorno durante el inicio mediante los datos de usuario de Amazon Elastic Compute Cloud (Amazon EC2) con un script de datos de usuario. Para obtener un script de datos de usuario que funcione en todas las versiones de Linux, consulte Configuración de proxy HTTP para instancias de contenedor de Linux.
Si utiliza Amazon Linux, consulte ¿Cómo configuro un proxy HTTP para Docker y el agente de contenedores de Amazon ECS en Amazon Linux?
Importante: La AMI de Amazon Linux (también denominada Amazon Linux 1) finalizó su ciclo de vida el 31 de diciembre de 2023. Se recomienda actualizar las aplicaciones a Amazon Linux 2023.
Almacenamiento de la dirección IP y el puerto del servidor proxy
Para almacenar la dirección IP y el puerto del servidor proxy, siga estos pasos:
- Conéctese a su instancia de Amazon EC2 mediante SSH.
- Como usuario raíz, almacene la dirección IP y el puerto del servidor proxy para usarlos más adelante en las variables de entorno. Por ejemplo:
export PROXY_SERVER_IP=x.x.x.x
export PROXY_PORT=1234
Configuración de un proxy HTTP para el daemon de Docker
Para configurar un proxy HTTP para el daemon de Docker, siga estos pasos:
-
Ejecute los siguientes comandos con permisos de 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
Nota: HTTP_PROXY es la dirección de socket (IPaddress:Port) del proxy HTTP que se utiliza para conectar el agente de contenedor de ECS a Internet.
Si se establece la variable HTTP_PROXY, debe establecer la variable NO_PROXY en 169.254.169.254,169.254.170.2. Esta configuración filtra los metadatos de las instancias de Amazon EC2, los roles de AWS Identity and Access Management (IAM) para las tareas y el tráfico de daemon de Docker desde el proxy.
-
Para recargar unidades si docker.service cambia en el disco, ejecute el siguiente comando:
systemctl daemon-reload
-
Para reiniciar Docker, ejecute el siguiente comando:
systemctl restart docker.service
Nota: El comando anterior detiene todos los contenedores en ejecución, incluido ecs-agent en la instancia de contenedor de ECS.
-
Para verificar la configuración del proxy HTTP para Docker, ejecute el siguiente comando:
docker info | grep -i proxy
Nota: El resultado del comando muestra el proxy HTTP y el proxy HTTPS.
Configuración de un proxy HTTP para el agente de contenedor
Para configurar un proxy HTTP para el daemon de Docker, siga estos pasos:
-
En su archivo /etc/ecs/ecs.config existente, incluya la configuración del proxy mediante los parámetros de configuración del agente HTTP_PROXY y NO_PROXY. Por ejemplo:
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
-
Para aplicar las configuraciones HTTP del paso 1 en ecs-agent, ejecute el siguiente comando:
systemctl restart ecs
Nota: Si utiliza una imagen de máquina de Amazon (AMI) optimizada para Amazon ECS, el agente de contenedor se ejecuta a través de ecs-init de forma predeterminada.
-
Para verificar la configuración del proxy HTTP para Docker y el agente contenedor, ejecute el siguiente comando:
docker inspect ecs-agent | grep -i proxy
Nota: La configuración del proxy aparece en la salida del comando.
Configuración de un proxy HTTP para ecs-init
Para configurar un proxy HTTP para ecs-init, siga estos pasos:
-
Ejecute los siguientes comandos con permisos de 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
-
Para recargar unidades si docker.service cambia en el disco, ejecute el siguiente comando:
systemctl daemon-reload
-
Para aplicar las configuraciones HTTP del paso 1 en ecs-agent, ejecute el siguiente comando:
systemctl restart ecs
Nota: La configuración de Docker y del agente de contenedor solo afecta a la instancia en ejecución actual. Para actualizar todas las instancias de un clúster, cree una configuración de inicio y, a continuación, use un grupo de escalamiento automático para iniciar nuevas instancias.
Información relacionada
Actualización del agente de contenedores de Amazon ECS
Bootstrapping container instances with Amazon EC2 user data (Arranque de instancias de contenedor con datos de usuario de Amazon EC2)