跳至內容

如何在 Amazon Linux 中,為 Docker 和 Amazon ECS 容器代理程式設定 HTTP Proxy?

2 分的閱讀內容
0

我想要為 Docker 和 Amazon Linux 中的 Amazon Elastic Container Service (Amazon ECS) 容器代理程式設定 HTTP Proxy。

簡短描述

請執行下列動作:

  • 儲存 IP 位址和 Proxy 伺服器連接埠。
  • 為 Docker 常駐程式設定 HTTP Proxy。
  • 設定 Amazon ECS 容器代理程式的 HTTP Proxy。
  • 設定 ecs-init 的 HTTP Proxy。如需詳細資訊,請參閱 GitHub 網站上的 amazon-ecs-init

**注意:**您也可以使用具有使用者資料指令碼的 Amazon Elastic Compute Cloud (Amazon EC2) 使用者資料,在啟動期間設定您的環境變數。有關適用於所有 Linux 版本的使用者資料指令碼,請參閱使用 Amazon ECS Linux 容器執行個體的 HTTP Proxy

如果您使用 Amazon Linux 2 或 Amazon Linux 2023,請參閱如何在 Amazon Linux 2 或 Amazon Linux 2023 中,為 Docker 和 Amazon ECS 容器代理程式設定 HTTP Proxy?
**注意:**Amazon Linux 1 Amazon Machine Image (AMI) 已達到其生命週期終點。最佳實務是遷移到 Amazon Linux 2 或 Amazon Linux 2023 AMI。如需詳細資訊,請參閱 Amazon Linux AMI 常見問題集

解決方法

儲存 IP 位址和 Proxy 伺服器連接埠

請完成下列步驟:

  1. 使用 SSH 連線到 Amazon EC2 執行個體
  2. 以根使用者身分,記下 Proxy 伺服器的 IP 位址和連接埠,以便稍後在環境變數中使用:
    export PROXY_SERVER_IP=x.x.x.xexport PROXY_PORT=1234

為 Docker 常駐程式設定 HTTP Proxy

請完成下列步驟:

  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 Proxy 的 socket 位址 (IPaddress:Port),用於將 Amazon ECS 容器代理程式連接到網際網路。

    如果已設定 HTTP_PROXY 變數,則必須將 NO_PROXY 變數設為 169.254.169.254,169.254.170.2。此設定會篩選來自 Proxy 的 Amazon EC2 執行個體中繼資料、任務的 AWS Identity and Access Management (IAM) 角色,以及 Docker 常駐程式流量。

  2. 若要重新啟動 Docker,請執行以下命令:

    service docker restart

    **注意:**上述命令會停止所有正在執行的容器。例如,它會停止容器執行個體上的 ecs-agent

  3. 若要檢查 Docker 的 HTTP Proxy 設定,請執行以下命令:

    docker info | grep -i proxy

    **注意:**命令的輸出結果會顯示 HTTP Proxy 和 HTTPS Proxy。

設定 Amazon ECS 容器代理程式的 HTTP Proxy

請完成下列步驟:

  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 Proxy 組態套用到 ecs-agent,請執行以下命令:

    sudo start ecs

    **注意:**如果您使用 Amazon ECS 最佳化 AMI,則 Amazon ECS 容器代理程式預設透過 ecs-init 運作。

  3. 若要檢查 Docker 與 Amazon ECS 容器代理程式的 HTTP Proxy 設定,請執行以下命令:

    docker inspect ecs-agent | grep -i proxy

**注意:**Proxy 設定會顯示在命令輸出結果中。

設定 ecs-init 的 HTTP Proxy

使用 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 容器代理程式的組態只會影響目前執行個體。若要更新叢集中的所有執行個體,請使用使用者資料建立啟動組態,然後使用 Auto Scaling 群組啟動新執行個體。

相關資訊

更新 Amazon ECS 容器代理程式

啟動容器執行個體以傳遞資料