スキップしてコンテンツを表示

Docker と Amazon ECS コンテナエージェントの HTTP プロキシを Amazon Linux 2 か Amazon Linux 2023 に設定するにはどうすればよいですか?

所要時間2分
0

Docker と Amazon Elastic Container Service (Amazon ECS) コンテナエージェントの HTTP プロキシを Amazon Linux 2 か Amazon Linux 2023 に設定したいと考えています。

解決方法

Docker と Amazon ECS コンテナエージェントの HTTP プロキシを Amazon Linux 2 か Amazon Linux 2023 に設定するには、次の手順を実行します。

注: 起動時にユーザーデータスクリプトを使用し、Amazon Elastic Compute Cloud (Amazon EC2) ユーザーデータによって環境変数を設定することもできます。Linux のすべてのバージョンで機能するユーザーデータスクリプトについては、「Linux コンテナインスタンスの HTTP プロキシ設定」を参照してください。

Amazon Linux を使用している場合は、「Docker と Amazon ECS コンテナエージェントの HTTP プロキシを Amazon Linux 2 か Amazon Linux 2023 に設定するにはどうすればよいですか?」を参照してください。

重要: Amazon Linux AMI (Amazon Linux 1 ともいいます) は、2023年12月31日にサポートが終了しました。アプリケーションを Amazon Linux 2023 にアップグレードするのがベストプラクティスです。

IP アドレスとプロキシサーバーポートを保存する

IP アドレスとプロキシサーバーポートを保存するには、次の手順を実行します。

  1. SSH を使用して Amazon EC2 インスタンスに接続します
  2. ルートユーザーとして、プロキシサーバーの IP アドレスとポートを後で使用できるように環境変数に保存します。たとえば、次のようにします。
    export PROXY_SERVER_IP=x.x.x.x
    export PROXY_PORT=1234

Docker デーモンの HTTP プロキシーをセットアップする

Docker デーモンの HTTP プロキシーをセットアップするため、次の手順を実行します。

  1. 次のコマンドを sudo アクセス権限で実行します。

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

    注: HTTP_PROXY は、ECS コンテナエージェントをインターネットに接続するために使用される HTTP プロキシのソケットアドレス (IPaddress:Port) です。

    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 コンテナインスタンスの ecs-agent を含め、実行中のコンテナをすべて停止します。

  4. Docker の HTTP プロキシ設定を確認するため、次のコマンドを実行します。

    docker info | grep -i proxy

    注: コマンド出力には、HTTP プロキシと HTTPS プロキシが表示されます。

コンテナエージェントの HTTP プロキシをセットアップする

Docker デーモンの HTTP プロキシーをセットアップするため、次の手順を実行します。

  1. 既存の /etc/ecs/ecs.config ファイルに、HTTP_PROXY と NO_PROXY のエージェント設定パラメータを使用してプロキシ設定を含めます。たとえば、次のようにします。

    cat <<EOF > /etc/ecs/ecs.config
    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) を使用する場合、コンテナエージェントはデフォルトで ecs-init によって実行されます。

  3. Docker とコンテナエージェントの HTTP プロキシ設定を確認するため、次のコマンドを実行します。

    docker inspect ecs-agent | grep -i proxy

    注: プロキシ設定はコマンド出力に表示されます。

ecs-init の HTTP プロキシをセットアップする

ecs-init の HTTP プロキシをセットアップするには、次の手順を実行します。

  1. 次のコマンドを sudo アクセス権限で実行します。

    mkdir -p /etc/systemd/system/ecs.service.d
    cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf
    [Service]
    Environment="HTTPS_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 とコンテナエージェントのいずれの設定も、現在実行中のインスタンスにのみ影響します。クラスターにあるインスタンスをすべて更新するには、起動設定を作成してから、Auto Scaling グループを使用して新しいインスタンスを起動してください。

関連情報

Amazon ECS コンテナエージェントの更新

Amazon EC2 ユーザーデータによるコンテナインスタンスのブートストラップ

AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ