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

2 分钟阅读
0

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

简短描述

要在 Amazon Linux 2 中为 Docker 和 Amazon ECS 容器代理设置 HTTP 代理,请完成以下几部分中的步骤:

  • 存储 IP 地址和代理服务器端口
  • 为 Docker 守护程序设置 HTTP 代理
  • 为 Amazon ECS 容器代理设置 HTTP 代理
  • 为 ecs-init 设置 HTTP 代理

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

如果您未使用 Amazon Linux,请参阅如何在 Amazon Linux 中为 Docker 和 Amazon ECS 容器代理设置 HTTP 代理?

解决方法

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

1.    使用 SSH 连接到 Amazon EC2 实例

2.    以根用户身份,存储代理服务器的 IP 地址和端口,以备以后在环境变量中使用。例如:

export PROXY_SERVER_IP=x.x.x.x
export PROXY_PORT=1234

为 Docker 守护程序设置 HTTP 代理

1.    使用 sudo 权限运行以下命令:

mkdir /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=https://$PROXY_SERVER_IP:$PROXY_PORT"
Environment="NO_PROXY=169.254.169.254,169.254.170.2"
EOF

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

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

2.    若因 docker.service 在磁盘上不断发生更改而要重新加载单元,请运行以下命令:

systemctl daemon-reload

3.    要重新启动 Docker,请运行以下命令:

systemctl restart docker.service

**注意:**以上命令会停止所有正在运行的容器,包括容器实例上的 ecs-agent

4.    要验证 Docker 的 HTTP 代理设置,请运行以下命令:

docker info | grep -i proxy

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

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

1.    在 /etc/ecs/ecs.config 文件中,使用 HTTP_PROXY 和 NO_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.    要将步骤 1 中的 HTTP 配置应用至 ecs-agent,请运行以下命令:

systemctl restart ecs

**注意:**如果您使用经 Amazon ECS 优化的 Amazon 系统映像 (AMI),则 Amazon ECS 容器代理默认通过 ecs-init 运行。

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

docker inspect ecs-agent | grep -i proxy

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

为 ecs-init 设置 HTTP 代理

1.    使用 sudo 权限运行以下命令:

mkdir /etc/systemd/system/ecs.service.d
cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=$PROXY_SERVER_IP:$PROXY_PORT/"
Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"
EOF

2.    若因 docker.service 在磁盘上不断发生更改而要重新加载单元,请运行以下命令:

systemctl daemon-reload

3.    要将步骤 1 中的 HTTP 配置应用至 ecs-agent,请运行以下命令:

systemctl restart ecs

**注意:**Docker 和 Amazon ECS 容器代理的配置都只会影响正在运行的实例。要更新集群中的所有实例,请创建启动配置,然后使用 Auto Scaling 组启动新实例。


相关信息

更新 Amazon ECS 容器代理

使用 Amazon EC2 用户数据引导启动容器实例

相关视频

AWS 官方
AWS 官方已更新 4 年前