
전체 머신/Docker 데몬을 레지스트리에 기록할 수 있는 방법이 있나요?
docker 로그인 및 다양한 독점 자격 증명 도우미 사용에 관해 내가 본 모든 것은 ~/.docker/config.json
사용자별입니다.
개인 레지스트리에서 이미지를 가져오고 싶은 상황이 있습니다. 여러 사람이 해당 컴퓨터에 대해 임의의 sudo 액세스 권한을 갖고 있으며 레지스트리에 대해 Docker를 사용할 수 있어야 합니다.
Docker 액세스는 어쨌든 시스템에 대한 루트 액세스로 읽어야 하고(즉, 사용자 자격 증명은 Docker를 실행할 수 있는 경우 상호 안전하지 않습니다) sudo 액세스는 동일하지만 직접적이므로 추적을 중단하고 전체 시스템을 기록하고 싶습니다. 모든 사용자가 어려움을 겪지 않아도 됩니다.
모든 사람이 자신의 에 링크할 수 있는 하나의 파일을 제공할 수 있지만 config.json
각 컴퓨터의 첫 번째 로그인부터 처리되는 것이 더 좋습니다.
답변1
세 가지 옵션이 떠오릅니다.
이미지를 비공개로 설정하지 말고, 대신 누구든지 레지스트리 서버에 액세스할 수 있는 이미지를 가져올 수 있도록 허용하세요. 이미지에는 런타임에 삽입되거나 볼륨에 저장되는 구성 파일, 비밀 또는 데이터가 아닌 애플리케이션을 실행하기 위한 라이브러리와 바이너리만 포함되어야 하기 때문에 이는 환경에서 매우 일반적입니다.
모든 사람에게 sudo 액세스 권한이 있는 경우 sudo에서 로그인을 포함하여 docker 명령을 실행합니다. 자격 증명은 루트 사용자의 아래에 저장됩니다.
~/.docker/config.json
호스트에 로그인을 출력하는 자체 자격 증명 도우미를 만드십시오. 자격 증명 도우미 인터페이스는 쉘 스크립트에서 구현할 수 있는 4가지 작업(저장, 가져오기, 나열, 삭제)으로 매우 간단합니다. 그리고 로그인의 경우 get 작업만 필요할 수도 있습니다.
해당 자격 증명 도우미 스크립트는 다음과 같은 스크립트처럼 보일 수 있습니다 docker-credential-your-helper
(여기서는 your-helper
선택한 이름이 될 수 있음).
#!/bin/sh
your_registry='
{ "ServerURL": "your-registry",
"Username": "your-user",
"Secret": "your-pass"
}
'
if [ "$1" = "get" ]; then
read hostname
case "$hostname" in
your-registry)
echo "${your_registry}"
exit 0
;;
esac
elif [ "$1" = "list" ]; then
echo "your-registry"
fi
# everything else is unhandled
exit 1
해당 파일을 실행 가능하게 만들고 경로에 배치하십시오. 그러면 모든 사용자는 ~/.docker/config.json
자격 증명 도우미 항목을 갖게 됩니다( docker-credential-
이 파일에는 포함되지 않으며 그 뒤의 파일 이름 부분만 포함됩니다).
{
"credHelpers": {
"your-host": "your-helper"
}
}