docker 構建 https 私有倉庫 Registry


1.安裝docker

# docker install docker

2.拉取倉庫鏡像

# docker pull registry

3.生成認證certificate

# mkdir ~/certs
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /root/certs/domain.key  -x509 -days 365 -out /root/certs/domain.crt

4.復制認證到docker

# mkdir /etc/docker/certs.d/mydockerhub.com:5000
# cp /root/certs/domain.crt  /etc/docker/certs.d/mydockerhub.com\:5000/ca.crt

5.復制認證到本機

# cat /root/certs/domain.crt >> /etc/pki/tls/certs/ca-bundle.crt 

7.啟動倉庫鏡像

# docker run -d -p 5000:5000 --privileged=true -v /root/docker/registry:/var/lib/registry -v /root/certs/:/root/certs  -e REGISTRY_HTTP_TLS_CERTIFICATE=/root/cer
ts/domain.crt -e REGISTRY_HTTP_TLS_KEY=/root/certs/domain.key registry

8.創建一個鏡像

docker run -it --name=nginx centos /bin/bash
yum install epel-release.noarch -y
yum install nginx -y
docker commit 7ab4d6b6a438 dingyingsi/nginx  //7ab4d6b6a438為容器id
docker tag dingyingsi/nginx mydockerhub.com:5000/nginx:latest //給當前鏡像打標簽

9.修改當前主機名:

vi /etc/hosts
192.168.184.166 mydockerhub.com

10.推送鏡像到https私有倉庫

docker push mydockerhub.com:5000/nginx

11.刪除本地鏡像並重新從https私有倉庫拉取鏡像

docker rmi mydockerhub.com:5000/nginx
docker pull mydockerhub.com:5000/nginx

 12.添加http basic authentication

docker run --entrypoint htpasswd  registry:2 -Bbn testuser testpassword > /root/auth/htpasswd

13.停止倉庫

docker stop  2a4c76559e18
docker start 2a4c76559e18

14.啟動http basic authentication倉庫

docker run -d \
--name registry \
-p 5000:5000 \
--restart=always \
--privileged=true \
-v /root/docker/registry:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-v /root/auth:/root/auth \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/root/auth/htpasswd" \
-v /root/certs/:/root/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/root/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/root/certs/domain.key \
registry

 

15.登錄倉庫

docker login mydockerhub.com:5000
username:testuser
password:testpassword

16.其他服務器用這個私有倉庫,直接復制docker的倉庫服務器下的/etc/docker/cert.d/下的mydockerhub.com:5000/ca.cert目錄和文件,到自己的/etc/docker/cert.d/目錄下即可。

參考文檔:https://docs.docker.com/registry/deploying/#running-a-domain-registry


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM