什么是registry
就像写的代码需要管理一样,docker hub是docker官方提供的管理镜像的地方。有时公司需要一个内部的独立的平台来管理镜像,
registry就是来做这个事情的。
registry的代码在github上能找到,最早是python写的,后来出了go语言的优化版本(这也说明go是很有前途的一门语言)。
万能的开发者不会傻到每次需要搭建自己的 hub的时候都从下载源码生成镜像开始,所以docker官方提供了registry基础镜像,
下载下来,生成你的容器就好。
如何部署registry
1 获取registry镜像:
$ sudo docker pull registry:2.1.1
2.1.1: Pulling from library/registry
9943fffae777: Pull complete
fb15e825cb68: Pull complete
b9583a207297: Pull complete
a3ed95caeb02: Pull complete
87fee1c528e9: Pull complete
829473b2393f: Pull complete
2c1adb4b358c: Pull complete
Digest: sha256:4a9bc5424fa7cc4fafd88b5d8dfb102ceb339e8f418fdeca7f094c86db284f1c
Status: Downloaded newer image for registry:2.1.1
查看:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
csdn_code/stage 201612151728_master_f5cb426d eb05cdd04f3a 17 hours ago 326.9 MB
csdn_code/gobuilder latest 19331a76c5c8 42 hours ago 785.5 MB
192.168.5.179:5000/csdn_code/gobuilder latest 19331a76c5c8 42 hours ago 785.5 MB
go/lish_first_image latest e619de913944 2 days ago 781.4 MB
192.168.5.179:5000/csdn_code/gobuilder <none> 3066a2344889 3 weeks ago 781.4 MB
192.168.5.179:5000/csdn_code/debian_base jessie 1bede0f75e95 6 weeks ago 313.8 MB
192.168.5.179:5000/golang latest 47734a1408b7 11 weeks ago 672.4 MB
registry 2.1.1 52bb991b482e 13 months ago 220.1 MB
2 启动容器
服务启动后,上传的repository会默认的保存在容器的/var/lib/registry,如果docker registry挂了,并且不可恢复,我们将失去所有镜像,
为了解决这个潜在的风险,我们通常将容器的/var/lib/registry目录挂在到宿主机。
$ sudo mkdir /opt/registry
$ sudo docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name="docker_registry" registry:2.1.1
查看容器启动情况:
gsh@git:~/csdn-docker-event-listener$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
070ab5fa8fdb registry:2.1.1 "/bin/registry /etc/d" 53 seconds ago Up 52 seconds 0.0.0.0:5000->5000/tcp docker_registry
8692cc70156b 3066a2344889 "/bin/bash" 2 days ago Exited (0) 2 days ago test_image
eb327168f07e 3066a2344889 "bash" 10 days ago Exited (0) 10 days ago compassionate_albattani
260bd8456c06 3066a2344889 "bash" 10 days ago Exited (0) 10 days ago admiring_euclid
6562ce8b3f93 3066a2344889 "bash" 10 days ago Exited (0) 10 days ago distracted_banach
22b3d248b787 3066a2344889 "bash" 10 days ago Exited (0) 10 days ago stupefied_aryabhata
可以看到,我们的docker_registry已经成功启动。启动容器时,我们使用了5000端口,而且registry支持http请求,
所以在浏览器中输入 localhost:5000/v2,可以看到浏览器的相应。
3 添加认证
服务启动后,需要修改docker配置文件,认证你新增的服务。
$ sudo vim /etc.default/docker
在里面添加:
DOCKER_OPTS="--insecure-registry 192.168.5.179:5000"
然后重启docker:
$ sudo service docker restart
使用
将刚才下载的registry推送到本地registry:
$ sudo docker push registry:2.1.1