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 값이 수정된 서비스 환경을 가릴 수 있습니다.