Quero configurar um proxy HTTP para o Docker e o atendente 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 atendente de contêiner do Amazon ECS.
- Configure um proxy HTTP para ecs-init. Para obter mais informações, consulte amazon-eks-ami 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 definir 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 How do I set up an HTTP proxy for Docker and the Amazon ECS container agent in Amazon Linux 2 or Amazon Linux 2023? (Como configuro um proxy HTTP para o Docker e o atendente de contêiner do Amazon ECS no Amazon Linux 2 ou 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 Amazon Linux 2023. Para obter mais informações, consulte 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 atendente de contêiner do Amazon ECS à Internet.
Se a variável HTTP_PROXY estiver definida, você deverá definir 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 atendente 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 atendente 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 de proxy HTTP ao ecs-agent, execute o seguinte comando:
sudo start ecs
Observação: Se você usa uma AMI otimizada para Amazon ECS, o atendente 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 atendente 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 atendente 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 atendente de contêiner do Amazon ECS
Inicialização de instâncias de contêiner para transmitir dados