docker registry-v2 搭建私有倉庫


參考官方文檔:https://docs.docker.com/registry/deploying/

參考 :http://www.tuicool.com/articles/6jEJZj

 

本例子使用兩台centos7虛擬機作為測試
node0:192.168.56.101
node1:192.168.56.102
 
使用域名搭建https的私有倉庫
 
1、node1作為私服服務器 配置 node0 node1 和主機的hosts映射
192.168.56.102 lhdocker.com
 
既然使用https,那么我們需要生成證書,本文講解的是使用openssl自簽名證 書,當然也可以使用諸如 Let’s Encrypt 等工具生成證書,首先在node1機 器上生成key:
 
mkdir -p ~/registry/certs
cd ~/registry/certs
openssl genrsa -out lhdocker.com.key 2048

 

生成密鑰文件:
 
openssl req -newkey rsa:4096 -nodes -sha256 -keyout lhdocker.com.key -x509 -days 365 -out lhdocker.com.crt
輸入信息
Country Name (2 letter code) [XX]:86
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Changping
Organization Name (eg, company) [Default Company Ltd]:modprobe
Organizational Unit Name (eg, section) []:modprobe
Common Name (eg, your name or your server's hostname) []:lhdocker.com
Email Address []:xxxxx@xxx.com
 
這樣自簽名證書就制作完成了。
由於是自簽名證書,默認是不受Docker信任的,故而需要將證書添加到Docker 的根證書中,Docker在CentOS 7中,證書存放路徑是 :
 
node1 端:
mkdir -p /etc/docker/certs.d/lhdocker.com
cp lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
 
node0端:
scp root@lhdocker.com:/etc/docker/certs.d/lhdocker.com/lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
 
拉取registry2 鏡像
docker pull registry:2

 

啟動registry2容器

  docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \
  registry:2

 

測試一下

docker pull kitematic/hello-world-nginx
docker tag kitematic/hello-world-nginx lhdocker.com/kitematic/hello-world-nginx
docker push lhdocker.com/kitematic/hello-world-nginx

如果成功,你會看到如下輸出

 

在node0上進行測試

docker pull lhdocker.com/kitematic/hello-world-nginx

到這里我們的docker私有倉庫就搭建完成了

 

 

這是沒有認證方式的啟動方式

在很多場景下,我們需要用戶登錄后才能訪問私有倉庫,那么我們可以如下操作: 建立在上文生成證書,同時重啟過Docker服務的前提下,我們講解一下如何配置: 

cd ~/registry/
mkdir auth
docker run --entrypoint htpasswd registry:2.2 -Bbn lihong 1233 > auth/htpasswd;

 

啟動registry容器的方式有一點區別

  docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \
  registry:2

 

在執行push操作之前需要登錄一下

 docker login lhdocker.com

輸入上面的用戶和密碼就可以了

 

 

 如果要停止registry服務,執行下面的命令就行了
docker stop registry && docker rm -v registry

 


免責聲明!

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



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