Amazon Linux で Docker と Amazon Elastic Container Service (Amazon ECS) コンテナエージェントに HTTP プロキシをセットアップしたいと考えています。
簡単な説明
以下のセクションにある手順を完了してください。
- IP アドレスとプロキシサーバーポートを保存する
- Docker デーモンの HTTP プロキシをセットアップする
- Amazon ECS コンテナエージェントの HTTP プロキシをセットアップする
- ecs-init 用の HTTP プロキシをセットアップする
注意: ユーザーデータスクリプトで Amazon Elastic Compute Cloud (Amazon EC2) ユーザーデータを記述して、起動時に環境変数を設定することも可能です。Linux の全バージョンで機能するユーザーデータスクリプトについては、「HTTP プロキシ設定」を参照してください。
Amazon Linux 2 を使用している場合は、Amazon Linux 2 の 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 アクセス権限で次のコマンドを実行します。
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 プロキシのソケットアドレス (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 docker restart
注意: 上記のコマンドは、コンテナインスタンス上の ecs-agent を含めた実行中のコンテナをすべて停止します。
3. 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 に適用するには、次のコマンドを実行します。
sudo start ecs
注意: Amazon ECS に最適化された Amazon マシンイメージ (AMI) を使用している場合、Amazon ECS コンテナエージェントはデフォルトで ecs-init を通じ実行されます。
3. 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 コンテナエージェントの更新
Amazon EC2 ユーザーデータを使用してコンテナインスタンスをブートストラップする