如何在 Amazon Linux 中为 Docker 和 Amazon ECS 容器代理设置 HTTP 代理?

2 分钟阅读
0

我想在 Amazon Linux 中为 Docker 和 Amazon Elastic Container Service (Amazon ECS) 容器代理设置 HTTP 代理。

简短描述

请执行以下操作:

  • 存储 IP 地址和代理服务器端口。
  • 为 Docker 进程守护程序设置 HTTP 代理。
  • 为 Amazon ECS 容器代理设置 HTTP 代理。
  • 为 ecs-init 设置 HTTP 代理。有关详细信息,请参阅 GitHub 网站上的 amazon-ecs-init

**注意:**您还可以在启动期间使用带有用户数据脚本的 Amazon Elastic Compute Cloud (Amazon EC2) 用户数据设置环境变量。有关适用于所有版本 Linux 的用户数据脚本,请参阅对 Amazon ECS Linux 容器实例使用 HTTP 代理

如果您使用 Amazon Linux 2 或 Amazon Linux 2023,请参阅如何在 Amazon Linux 2 或 Amazon Linux 2023 中为 Docker 和 Amazon ECS 容器代理设置 HTTP 代理?
**注意:**Amazon Linux 1 亚马逊机器映像 (AMI) 的生命周期已终止。最佳做法是迁移到 Amazon Linux 2 或 Amazon Linux 2023 AMI。有关详细信息,请参阅 Amazon Linux AMI 常见问题解答

解决方法

存储 IP 地址和代理服务器端口

完成以下步骤:

  1. 使用 SSH 连接到 Amazon EC2 实例
  2. 作为根用户,记下代理服务器的 IP 地址和端口,以便稍后在环境变量中使用:
    export PROXY_SERVER_IP=x.x.x.xexport PROXY_PORT=1234

为 Docker 进程守护程序设置 HTTP 代理

完成以下步骤:

  1. 使用 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

    **注意:**HTTP_PROXY 是 HTTP 代理的套接字地址 (IPaddress:Port),用于将 Amazon ECS 容器代理连接到互联网。

    如果设置了 HTTP_PROXY 变量,则必须将 NO_PROXY 变量设置为 169.254.169.254,169.254.170.2。此设置筛选了 Amazon EC2 实例元数据、任务的 AWS Identity and Access Management (IAM) 角色以及来自代理的 Docker 进程守护程序流量。

  2. 要重启 Docker,请运行以下命令:

    service docker restart

    **注意:**前面的命令停止所有正在运行的容器。例如,它会停止容器实例上的 ecs-agent

  3. 要检查 Docker 的 HTTP 代理设置,请运行以下命令:

    docker info | grep -i proxy

    **注意:**命令输出显示 HTTP 代理和 HTTPS 代理。

为 Amazon ECS 容器代理设置 HTTP 代理

完成以下步骤:

  1. /etc/ecs/ecs.config 文件中,添加 HTTP_PROXYNO_PROXY 代理配置参数。
    示例:

    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
  2. 要将 HTTP 代理配置应用于 ecs-agent,请运行以下命令:

    sudo start ecs

    **注意:**如果您使用经过 Amazon ECS 优化的 AMI,则默认情况下,Amazon ECS 容器代理通过 ecs-init 运行。

  3. 要检查 Docker 和 Amazon ECS 容器代理的 HTTP 代理设置,请运行以下命令:

    docker inspect ecs-agent | grep -i proxy

**注意:**代理设置显示在命令输出中。

为 ecs-init 设置 HTTP 代理

使用 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

**注意:**Docker 和 Amazon ECS 容器代理的配置仅影响当前实例。要更新集群中的所有实例,请使用用户数据创建启动配置,并使用自动扩缩组启动新实例。

相关信息

更新 Amazon ECS 容器代理

引导容器实例以传递数据

AWS 官方
AWS 官方已更新 7 个月前