Docker 用の HTTP プロキシと Amazon Linux の Amazon Elastic Container Service (Amazon ECS) コンテナエージェントをセットアップしたいです。
簡単な説明
次のアクションを実行します。
- IP アドレスとプロキシサーバーポートを記録します。
- Docker デーモン用の HTTP プロキシを設定します。
- Amazon ECS コンテナエージェント用の HTTP プロキシを設定します。
- ecs-init 用の HTTP プロキシをセットアップします。詳細については、GitHub のウェブサイトで amazon-ecs-init を参照してください。
注: 起動中に、環境変数を設定するユーザーデータスクリプトを含む Amazon Elastic Compute Cloud (Amazon EC2) ユーザーデータを使用することもできます。Linux のすべてのバージョンで動作するユーザーデータスクリプトについては、「Amazon ECS Linux コンテナインスタンスで HTTP プロキシを使用する」を参照してください。
Amazon Linux 2 または Amazon Linux 2023 を使用している場合は、「Amazon Linux 2 または Amazon Linux 2023 で、Docker と Amazon ECS コンテナエージェント用の HTTP プロキシを設定する方法を教えてください
注: Amazon Linux 1 Amazon マシンイメージ (AMI) のサポートは終了しています。Amazon Linux 2 または Amazon Linux 2023 AMI に移行するのがベストプラクティスです。詳細については、「Amazon Linux AMI に関するよくある質問」を参照してください。
解決策
IP アドレスとプロキシサーバーポートを記録する
次の手順を実行します。
- SSH を使用して Amazon EC2 インスタンスに接続します。
- root ユーザーで操作し、後で環境変数で使用するプロキシサーバーの IP アドレスとポートをメモしておきます。
export PROXY_SERVER_IP=x.x.x.xexport PROXY_PORT=1234
Docker デーモン用の HTTP プロキシをセットアップする
次の手順を実行します。
-
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 は、Amazon ECS コンテナエージェントをインターネットに接続するために使用する HTTP プロキシのソケットアドレス (IP アドレス:ポート) です。
HTTP_PROXY 変数が設定されている場合は、NO_PROXY 変数を 169.254.169.254,169.254.170.2 に設定する必要があります。この設定は、Amazon EC2 インスタンスのメタデータ、タスクの AWS Identity and Access Management (IAM) ロール、プロキシからの Docker デーモントラフィックをフィルタリングします。
-
Docker を再起動するには、以下のコマンドを実行します。
service docker restart
注: 上記のコマンドは、実行中のすべてのコンテナを停止します。たとえば、コンテナインスタンスの ecs-agent が停止します。
-
Docker の HTTP プロキシ設定を確認するには、次のコマンドを実行します。
docker info | grep -i proxy
注: コマンド出力には、HTTP プロキシと HTTPS プロキシが表示されます。
Amazon ECS コンテナエージェントの HTTP プロキシをセットアップする
次の手順を実行します。
-
/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
-
HTTP プロキシ設定を ecs-agent に適用するには、次のコマンドを実行します。
sudo start ecs
注: Amazon ECS に最適化された AMI を使用する場合、Amazon ECS コンテナエージェントはデフォルトで ecs-init を使用して実行します。
-
Docker と Amazon ECS コンテナエージェントの HTTP プロキシ設定を確認するには、次のコマンドを実行します。
docker inspect ecs-agent | grep -i proxy
注: プロキシ設定はコマンド出力に表示されます。
ecs-init 用の HTTP プロキシをセットアップする
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 コンテナエージェントのアップデート
コンテナインスタンスをブートストラップしてデータを渡す