yq v4로 Docker daemon.json의 프록시 필드 편집하기
Mike Farah의 yq v4를 사용해 기존 daemon 설정을 유지하고 프록시 문자열을 삽입하며 검토 가능한 JSON 후보를 만듭니다.
daemon.json 파일에는 이미 DNS, 저장소 또는 로깅 설정이 들어 있을 수 있습니다. 프록시를 바꿀 때는 그 키들을 그대로 유지해야 합니다.
Mike Farah의 yq v4로 각 필드를 따로 지정하고 별도의 후보 파일을 작성합니다.
http_proxy='http://proxy.example:8080' \
https_proxy='http://proxy.example:8080' \
no_proxy='localhost,127.0.0.1,.internal.example' \
yq -o=json '
.proxies."http-proxy" = strenv(http_proxy) |
.proxies."https-proxy" = strenv(https_proxy) |
.proxies."no-proxy" = strenv(no_proxy)
' /etc/docker/daemon.json > daemon.proxy-candidate.jsonHTTP 프록시 목록은 공개 registry 트래픽이 공개 중계자를 쓸 수 있는 경우 두 HTTP URL 값의 후보를 제공합니다. 내부 우회 항목은 그대로 두십시오. strenv는 각 값을 문자열로 읽습니다. env는 대신 YAML 값으로 해석하므로 이 URL 및 우회 필드에는 필요하지 않습니다. strenv 안의 환경 변수 이름에는 달러 접두사가 없습니다.
세 필드를 지정하면 proxies의 다른 구성원과 무관한 최상위 설정도 유지됩니다. -o=json 옵션은 Docker가 기대하는 형식으로 출력을 유지합니다. yq라는 다른 프로그램은 식 언어가 다를 수 있습니다.
머신의 일반적인 구성 절차로 활성 파일을 교체하기 전에 후보를 검토하십시오. 셸 리다이렉션으로 입력 파일에 직접 다시 쓰면 yq가 읽기 전에 파일이 잘릴 수 있습니다.
이 하이픈이 들어간 필드 이름은 Docker Engine의 daemon을 구성합니다. Docker Desktop은 자체 프록시 설정을 사용하고, CLI의 컨테이너 환경 프록시 객체는 다른 스키마를 가집니다.