Docker プロキシ資格情報: URL エンコードと systemd のパーセントエスケープ
プロキシ資格情報の構成要素をパーセントエンコードし、そのパーセント記号を systemd の Environment 割り当てを通じて保持します。
ドメイン形式のプロキシ ユーザー名にはバックスラッシュを含めることができ、パスワードには URI 構文が予約する文字を含めることができます。プロキシ URL を組み立てるときは、それらの資格情報の構成要素をエンコードしてください。たとえばバックスラッシュは %5C になります。
systemd サービスの Environment 割り当ては、もう一つのパーサーを追加します。ユニット設定内のリテラルのパーセント記号は二重にする必要があります:
[Service]
Environment="HTTPS_PROXY=http://DOMAIN%%5Cproxy-user:example%%[email protected]:8080"
例示した値はドメイン形式のユーザー名と # を含むパスワードを表します。systemd は %% を % に変換し、エンコード済みの URL をデーモンに残します。宛先スキームもこの経路を必要とする場合は、対応する HTTP_PROXY 割り当てを追加してください。
二重パーセントは systemd の構文です。一方、Docker の daemon.json のプロキシ値には %5C や %23 といった通常の URI エスケープが入ります。ユニットファイルの表記をそのまま JSON やクライアントのプロキシ URL フィールドにコピーしないでください。
設定済みの取得元にも注意を向けてください。Docker は、デーモンのプロキシ設定がプロキシ環境変数より優先されると文書化しています。そのため、古い JSON 値が修正済みのサービス環境を覆い隠すことがあります。