본문 바로가기

가상화/Kubernetes

[Docker] Priviate registry 구성 #3 - 인증 구성

반응형

개요

구성환경

Docker version 19.03.5, registry 2.7.1

 

1. 인증 사용자/패스워드 생성

shell> mkdir /opt/registry/auth/    => htpaswd 파일이 저장될 디렉토리
shell> docker run --entrypoint htpasswd registry:2.7.1 -Bbn "user1" "password123" > /opt/registry/auth/htpasswd

2. Registry 서버 인증을 사용하여 기동

docker run -d \
  --restart=always \
  --name registry \
  -v /opt/registry/certs:/certs \
  -v /opt/registry/auth:/auth \
  -e REGISTRY_AUTH=htpasswd \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -e REGISTRY_STORAGE_DELETE_ENABLED=true \
  -p 443:443 \
  registry:2.7.1

3. 인증을 이용하여 이미지 업로드

- 인증 정보가 없어  업로드가 되지 않는다.

shell> docker push registry.hoya.com/ubuntu:17.04
The push refers to repository [registry.hoya.com/ubuntu]
3ff70ce53dac: Preparing
b8e5935ae7cc: Preparing
ba76b502dc9b: Preparing
803030df23c1: Preparing
db8686e0ca43: Preparing
no basic auth credentials
shell> 

- docker login 명령어로 Private Registry의 인증정보를 생성한다.

shell> docker login registry.hoya.com    => Private Registry에 로그인
Username: user1
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
shell> cat ~/.docker/config.json   => 로그인 정보가 $HOME/.docker/config.json 파일에 저장됨
{
        "auths": {
                "registry.hoya.com": {
                        "auth": "dXNlcjE6cGFzczc1NTc="
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/19.03.5 (linux)"
        }
}
shell>  docker push registry.hoya.com/ubuntu:17.04       => 이제 업로드를 해보자
The push refers to repository [registry.hoya.com/ubuntu]
3ff70ce53dac: Pushed
b8e5935ae7cc: Pushed
ba76b502dc9b: Pushed
803030df23c1: Pushed
db8686e0ca43: Pushed
17.04: digest: sha256:213e05583a7cb8756a3f998e6dd65204ddb6b4c128e2175dcdf174cdf1877459 size: 1357
shell> curl --user user1:password123 -X GET https://registry.hoya.com/v2/_catalog   => repository 목록 조회
{"repositories":["ubuntu"]}

4. 트러블슈팅

 4.1 우분투에서 docker login 시 아래와 같은 오류 발생

 증상) 

shell> docker login registry.hoya.com
Username: user1
Password:
Error saving credentials: error storing credentials - err: exit status 1, out: `The connection is closed`

 조치 : pass 패키지를 설치한다.

shell> apt install pass

 

Private registry 구성 #1 - 설치

Private registry 구성 #2 - TLS 구성

 

반응형