Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

OneDay Network

docker private registry 구축하기(docker hub) 본문

Docker

docker private registry 구축하기(docker hub)

programming 2020. 12. 1. 23:47

1. 인증서 만들기(certbot 설치)

curl https://dl.eff.org/certbot-auto > certbot-auto
chmod +x certbot-auto
mv certbot-auto /usr/local/sbin/certbot-auto
certbot-auto --nginx


2. docker registry 

docker run -d -p 5000:5000 --restart=always --name docker-registry \

-v /root/certs:/certs \

-v /root/registry:/var/lib/registry/docker/registry/v2 \

-v /root/auth:/auth \

-e "REGISTRY_AUTH=htpasswd" \

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem \

-e REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem \

registry


3. docker registry web

docker run -d -p 8080:8080 --name registry-web --link docker-registry \

           -e REGISTRY_URL=https://"Domain":5000/v2 \

           -e REGISTRY_TRUST_ANY_SSL=true \

           -e REGISTRY_BASIC_AUTH="ID/PW(Base64)" \

           -e REGISTRY_NAME="Domain":5000 hyper/docker-registry-web


4. user 생성

htpasswd -Bbn "ID" "PW" >> /root/auth/htpasswd


5. 사용법 및 검증

1. docker login "Domain":5000
-> ID/PW 입력

2. docker push, pull  
-> docker push "Domain":5000/test
-> docker pull "Domain":5000/test

3. docker image 항목 확인
-> curl 명령어를 통한 확인
-> web을 통한 확인

 

5-1. curl 명령어를 통한 확인

※ 이미지 목록 조회 
- curl -u "ID":"PW" -X GET https://"Domain":5000/v2/_catalog

※ 이미지에 대한 태그 조회(버전)
- curl -u "ID":"PW" -X GET https://"Domain":5000/v2/"Image name"/tags/list

5-2. web을 통한 확인

-  http://"Domain":8080 으로 접속

 

6. 인증서 자동 갱신

#!/bin/bash

/usr/local/sbin/certbot-auto renew

yes | cp /etc/letsencrypt/live/"Domain"/cert.pem /root/certs/cert.pem
yes | cp /etc/letsencrypt/live/"Domain"/chain.pem /root/certs/chain.pem
yes | cp /etc/letsencrypt/live/"Domain"/fullchain.pem /root/certs/fullchain.pem
yes | cp /etc/letsencrypt/live/"Domain"/privkey.pem /root/certs/privkey.pem

docker restart docker-registry

echo `date` "UPDATE CA" >> /var/log/update_ca.log
[root@localhost certs]# crontab -l

0 01 1 * * /root/certs/update_ca.sh ※매달 1일 오전 1시
The following certs are not due for renewal yet:
  /etc/letsencrypt/live/"Domain"/fullchain.pem expires on 2021-02-07 (skipped)
No renewals were attempted.

이와 같이 crontab을 등록하면 매달 1일 오전 1시에 자동으로 갱신 될 것이다.

하지만, 위 에러 메시지가 나타나면서 인증서 갱신이 되지 않을 수 있다.
이는 만료일이 1개월 미만 일 때만 정상적으로 인증서가 갱신된다는 점은 참고하면 좋을 것 같다.

 

 

Comments