原文地址:http://kekefund.com/2017/06/07/doker-registry/ (本人博客)
Docker提供了開放的中央倉庫dockerhub,同時也允許我們使用registry搭建本地私有倉庫。搭建私有倉庫有如下的優點:
- 節省網絡帶寬,提升Docker部署速度,不用每個鏡像從DockerHub上去下載,只需從私有倉庫下載就可;
- 私有鏡像,包含公司敏感信息,不方便公開對外,只在公司內部使用。
1,搭建私有倉庫
1.1 下載鏡像registry
$ docker pull registry
1.2 啟動容器
$ docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /mydata/dockerRegistry:/var/lib/registry registry
解釋一下:
-d:后臺運行
-p:將容器的5000端口映射到宿主機的5000端口
--restart:docker服務重啟后總是重啟此容器
--name:容器的名稱
-v:將容器內的/var/lib/registry映射到宿主機的/mydata/dockerRegistry目錄
2,搭建WEB服務
私有倉庫搭建好了,怎么查看倉庫里的鏡像,搭建一個web服務,查看修改image比較方便。
2.1 下載鏡像
$ docker pull hyper/docker-registry-web
2.2 啟動容器
docker run -it -p 8080:8080 --restart=always --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
解釋一下:
-it: 以交互模式運行
--link:鏈接其它容器(registry-srv),在此容器中,使用registry-srv等同于registry-srv容器的局域網地址
-e:設置環境變量
3,上傳本地鏡像到私有倉庫
例如,將本地的hcharts上傳到倉庫
$ docker images | grep hcharts
cbbing/hcharts latest 64164ca3dafe 3 weeks ago 550 MB
3.1 修改鏡像tag
$ docker tag cbbing/hcharts 192.168.1.87:5000/cbbing/hcharts
3.2 上傳tag鏡像到倉庫
docker push 192.168.1.87:5000/cbbing/hcharts
The push refers to a repository [192.168.1.87:5000/hcharts]
96b641920005: Pushing [===> ] 8.852 MB/125.1 MB
ee2881ef910e: Pushing [==> ] 11.69 MB/232.7 MB
36018b5e9787: Pushing [===> ] 11.99 MB/192.5 MB
3.3 會出現的push失敗
$ docker push 192.168.1.87:5000/hcharts
The push refers to a repository [192.168.1.87:5000/hcharts]
Get https://192.168.1.87:5000/v1/_ping: http: server gave HTTP response to HTTPS client
這是因為Docker在1.3.x之后默認docker registry使用的是https,為了解決這個問題,修改本地主機的docker啟動配置文件,添加
--insecure-registry 192.168.1.87:5000
我的macbook在圖形化終端上修改如下,填寫后“Apply&Restart”。
3.4 下載鏡像
在另外的客戶機上pull鏡像,跟拉取DockerHub上的鏡像是一樣的流程。
$ docker pull 192.168.1.87:5000/hcharts
4,wen端查看私有倉庫鏡像
訪問:http://192.168.1.87:8080/,網頁上呈現:
參考:
1, https://store.docker.com/images/registry
2, https://store.docker.com/community/images/hyper/docker-registry-web