我希望在私有网络内部使用 Amazon Elastic Container Service (Amazon ECS) 群集,将 HTTP 代理用于 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。我该如何操作?

对于 Docker,您可以创建一个包含必要环境变量的 http-proxy.conf 文件。 然后重新启动 Docker 守护程序。对于 ECS 代理,您可以停止代理。然后您可以在添加几个参数后重新启动它。

设置 Docker 的 HTTP代理

1. 使用 SSH 连接到 EC2 实例。然后运行如下命令:

Systemd

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:3128/" "HTTPS_PROXY=http://PROXY_SERVER_IP:3128/" "NO_PROXY=169.254.169.254,/var/run/docker.sock"
EOF

注意:PROXY_SERVER_IP 是占位符;使用您的代理服务器的 IP 地址替换它。

Init

cat <<EOF > /etc/sysconfig/docker
[Service]
Environment="HTTP_PROXY=http://PROXY_SERVER_IP:3128/" "HTTPS_PROXY=http://PROXY_SERVER_IP:3128/" "NO_PROXY=169.254.169.254,/var/run/docker.sock"
EOF

2. 使用以下任何一个命令重新启动 Docker:

Systemd

systemctl restart docker

Init

service docker restart

3. 使用以下命令验证 Docker 的 HTTP 代理设置:

docker info| grep -i proxy

现在您可以在结果中看到 HTTP 代理和 HTTPS 代理。

设置 ECS 代理的 HTTP 代理

1. 使用以下命令启动 ECS 代理:

docker run --name ecs-agent \
--env=ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true \
--env=ECS_ENABLE_TASK_IAM_ROLE=true \
--env "NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock" \
--env "https_proxy=http://PROXY_SERVER_IP:PORT" \
--env "http_proxy=http://PROXY_SERVER_IP:PORT" \
--env=ECS_DATADIR=/data \
--env=ECS_LOGLEVEL=info \
--env=ECS_LOGFILE=/log/ecs-agent.log \
--env=ECS_CLUSTER=CLUSTER_NAME \
--net=host \
--volume=/var/lib/ecs/data:/data \
--volume=/var/log/ecs/:/log \
--volume=/var/run/docker.sock:/var/run/docker.sock \
--restart=on-failure:10 \
--detach=true \
amazon/amazon-ecs-agent:latest

注意: CLUSTER_NAME 和 PROXY_SERVER_IP:PORT 属于占位符。使用预先存在的群集名和代理服务器的 IP:端口代替它们。

2. 使用以下命令验证 Docker 和 ECS 代理的 HTTP 代理设置:

docker inspect ecs-agent | grep –i proxy

现在您可以在结果中看到 HTTP 代理和 HTTPS 代理。

注意:这两个配置都仅影响单个实例。如要更新群集中的所有实例,请创建启动配置。然后使用 Auto Scaling 组来启动新的实例。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2017 年 3 月 22 日

更新时间:2018 年 3 月 22 日