Quero configurar um proxy HTTP para o Docker e o agente de contêiner do Amazon Elastic Container Service (Amazon ECS) no Amazon Linux.
Breve descrição
Realize as seguintes ações:
- Armazene o endereço IP e a porta do servidor proxy.
- Configure um proxy HTTP para o daemon do Docker.
- Configure um proxy HTTP para o agente de contêiner do Amazon ECS.
- Configure um proxy HTTP para ecs-init. Para obter mais informações, consulte amazon-ecs-init no site do GitHub.
Observação: também é possível usar dados de usuário do Amazon Elastic Compute Cloud (Amazon EC2) que tenham um script de dados do usuário para configurar suas variáveis de ambiente durante a execução. Para um script de dados de usuário que funciona em todas as versões do Linux, consulte Uso de um proxy HTTP para instâncias de contêiner do Linux no Amazon ECS.
Se você usa o Amazon Linux 2 ou o Amazon Linux 2023, consulte Como configuro um proxy HTTP para o Docker e o atendente de contêiner do Amazon ECS no Amazon Linux 2 ou no Amazon Linux 2023?
Observação: a imagem de máquina da Amazon (AMI) do Amazon Linux 1 chegou ao fim de sua vida útil. É uma prática recomendada migrar para as AMIs do Amazon Linux 2 ou do Amazon Linux 2023. Para obter mais informações, consulte Amazon Linux AMI FAQs (Perguntas frequentes do Amazon Linux AMI).
Resolução
Armazene o endereço IP e a porta do servidor proxy
Conclua as etapas a seguir:
- Conecte-se à instância do Amazon EC2 usando SSH.
- Como usuário-raiz, anote o endereço IP e a porta do servidor proxy para usar posteriormente nas variáveis de ambiente:
export PROXY_SERVER_IP=x.x.x.xexport PROXY_PORT=1234
Configure um proxy HTTP para o daemon do Docker
Conclua as etapas a seguir:
-
Execute os seguintes comandos com permissões sudo:
cat <<EOF >> /etc/sysconfig/docker
export HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT
export HTTPS_PROXY=https://$PROXY_SERVER_IP:$PROXY_PORT
export NO_PROXY=169.254.169.254,169.254.170.2
EOF
Observação: HTTP_PROXY é o endereço do soquete (IPaddress:Port) do proxy HTTP usado para conectar o agente de contêiner do Amazon ECS à internet.
Se a variável HTTP_PROXY estiver configurada, você deve configurar a variável NO_PROXY como 169.254.169.254,169.254.170.2. Essa configuração filtra os metadados da instância do Amazon EC2, os perfis do AWS Identity and Access Management (AWS IAM) para tarefas e o tráfego do daemon do Docker a partir do proxy.
-
Para reiniciar o Docker, execute o seguinte comando:
service docker restart
Observação: o comando anterior interrompe todos os contêineres em execução. Por exemplo, ele interrompe o ecs-agent na instância de contêiner.
-
Para verificar as configurações de proxy HTTP do Docker, execute o seguinte comando:
docker info | grep -i proxy
Observação: a saída do comando mostra o proxy HTTP e o proxy HTTPS.
Configure um proxy HTTP para o agente de contêiner do Amazon ECS
Conclua as etapas a seguir:
-
Em seu arquivo /etc/ecs/ecs.config, adicione os parâmetros de configuração do agente HTTP_PROXY e NO_PROXY.
Exemplo:
cat <<EOF >> /etc/ecs/ecs.config
ECS_CLUSTER=your-cluster-name
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 as configurações do proxy HTTP ao ecs-agent, execute o seguinte comando:
sudo start ecs
Observação: se você usa uma AMI otimizada para o Amazon ECS, o agente de contêiner do Amazon ECS é executado por meio do ecs-init por padrão.
-
Para verificar as configurações de proxy HTTP para o Docker e o agente de contêiner do Amazon ECS, execute o seguinte comando:
docker inspect ecs-agent | grep -i proxy
Observação: as configurações de proxy aparecem na saída do comando.
Configure um proxy HTTP para ecs-init
Execute os seguintes comandos com permissões sudo:
cat <<EOF > /etc/init/ecs.override
env HTTP_PROXY=$PROXY_SERVER_IP:$PROXY_PORT
env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock
EOF
Observação: a configuração do Docker e do agente de contêiner do Amazon ECS afeta somente a instância atual. Para atualizar todas as instâncias em um cluster, crie uma configuração de execução com dados de usuário e use um grupo do Auto Scaling para executar novas instâncias.
Informações relacionadas
Atualizar o agente de contêiner do Amazon ECS
Bootstrapping container instances to pass data (Inicialização de instâncias de contêiner para transmitir dados)