因為 Docker官方倉庫 在國內訪問速度非常慢的涕俗,并且只允許有一個私有庫,所以對于企業(yè)開發(fā)來說神帅,考慮安全性和速度的因素再姑,都需要自己搭建一個私有倉庫來存放企業(yè)項目的各個版本的鏡像,以下操作過程都基于官方 Registry 2.5.0 版本鏡像找御。
搭建步驟
- 在Ubuntu 14.04服務器上創(chuàng)建目錄
mkdir /home/freeman/docker-registry
用于存儲鏡像文件元镀。 - 啟動容器
sudo docker run -d -p 5000:5000 -v /home/freeman/docker-registry:/var/lib/registry registry:2.5.0
注意2.5.0版本的registry內部images存儲的目錄為:/var/lib/registry
,不再是老版本的/tmp/register
,-v
使用數(shù)據(jù)卷霎桅,這樣就將registry中的所有鏡像持久化到宿主服務器上栖疑,無論你以后關閉或是該registry容器,鏡像始終存在服務器上滔驶。 - 在nginx服務器上設置https反向代理指向:
127.0.0.1:5000
蔽挠,此處使用hub.domain.com
作為演示域名,因為考慮到安全問題瓜浸,請使用SSL澳淑,免費SSL證書可以在 StartComSsl 或 Letsencrypt 上獲取。
server {
listen 443;
server_name hub.domain.com;
ssl on;
ssl_certificate /home/freeman/ssl/hub.domain.com.crt;
ssl_certificate_key /home/freeman/ssl/hub.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
proxy_pass http://127.0.0.1:5000;
}
}
- 使用 registry 2.0 api 訪問倉庫插佛。
$ curl https://hub.domain.com/v2/_catalog # 獲取所有repositories
$ {"repositories":["dotnet","hello-world","yuehuapi"]}
$ curl https://hub.domain.com/v2/yuehuapi/tags/list # 獲取一個鏡像的所有標簽
$ {"name":"yuehuapi","tags":["v1.0.3"]}
使用私有倉庫
- 使用
docker tag hub.domain.com/yuehuapi:v1.0.0 image-id
將鏡像打上私有倉庫標簽 - 使用
docker push hub.domain.com/yuehuapi:v1.0.0
將鏡像推送到私有倉庫 - 使用
docker run hub.domain.com/yuehuapi:v1.0.0
運行來自私有倉庫的容器