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 は、Amazon 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-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年前