관리 메뉴

가끔 보자, 하늘.

docker private registry에 인증 절차 추가하기 본문

개발 이야기/인프라 구축 및 운영

docker private registry에 인증 절차 추가하기

가온아 2015. 2. 4. 19:39

"가장 빨리 만나는 Docker" 책을 참고함.


구조는 아래와 같이 잡는다. 


(내부) docker-registry <---> nginx auth <---> (외부)docker daemon


기본 registry를 내려받아 실행.


sudo docker run -d --name docker-registry -v /tmp/registry:/tmp/registry registry:0.9.1

(* port는 nginx에서 redirect될거라 오픈할 필요는 없음.)


openssl로 key 제작


1. openssl genrsa -out 이름.key 2048

2. openssl req -new -key 이름.key -out.이름.csr  (작성시 도메인은  registry.test.com로 맞춰야 한다.)

3. openssl x509 -req -days 365 -in 이름.csr -signkey 이름.key -out 이름.crt


이 파일을 nginx 서버와 클라에서 아래 과정을 거쳐 인증서를 시스템에 설치한다.


1. cp 이름.crt /usr/share/ca-certificates/ (ca-certificates 폴더가 없다면 "sudo apt-get install curl")

2. echo "이름.crt" | tee -a /etc/ca-certificates.conf (설치할 인증서 목록에 추가함.)

3. update-ca-certificates (ca-certificates.conf에 포함된 내용을 참고로 인증서 설치)


 이후 도커 재시작 필요함.


nginx 서버는 아래와 같이 실행할 것! (이걸 실행 후 openssl 처리해야 할 걸.)


sudo docker run --name reg-auth \

 -p 443:443 \

 -d  \

 -v /rs2m/data:/data \

 -v /rs2m/data/nginx.conf:/etc/nginx/nginx.conf \

 -v /rs2m/data/이름.crt:/etc/이름.crt \

 -v /rs2m/data/이름.key:/etc/이름.key \

 -v /rs2m/data/.htpasswd:/etc/nginx/.htpasswd \

 --link docker-registry:docker-registry \

 nginx:1.7.9


nginx.conf는 아래와 같이 !!


worker_processes  1;


events{

    worker_connections   1024;

}


http{

    server{

        listen 443 ssl;

        server_name registry.test.com


        ssl on;

        ssl_certificate /etc/rs2m_reg.crt;

        ssl_certificate_key /etc/rs2m_reg.key;


        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Authorization "";

        proxy_redirect http:// https://;


        client_max_body_size 0;

        chunked_transfer_encoding on;


        location / {

            proxy_pass http://rs2m-reg:5000;

            auth_basic "Restricted";

            auth_basic_user_file /etc/nginx/.htpasswd;

        }

    }

}


반응형