docker registry实践

首先得从hub上获取官方的镜像

docker pull registry

官方示例:

$ docker run -d -p 5000:5000 --restart always --name registry registry:2

$ docker pull ubuntu

$ docker tag ubuntu localhost:5000/ubuntu

$ docker push localhost:5000/ubuntu

我的实践:
我有俩台机器,分别是
192.168.227.133 (各种作的机器)
192.168.227.134 (准备作为一个服务器)

在192.168.227.134上建立仓库,并运行

$ docker pull registry
$ docker run -d -p 5000:5000 --restart always --name registry registry:2

添加信赖

访问 http://192.168.227.134:5000/v2/ 不通或者在其他机器上远程push时报错,比如" dial tcp 192.168.227.134:5000: i/o timeout"等,有可能是因为我们启动的registry服务不是安全可信赖的。我们需要修改docker的配置文件/etc/default/docker,添加下面的内容 DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000"
切换到root用户

vim /etc/default/docker

添加如下:

DOCKER_OPTS="--insecure-registry 192.168.227.134:5000"

重启docker服务:

service docker restart

在客户机上测试一下。首先打个tag,然后push。

kring@userver:~$ docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
sath89/oracle-12c                  latest              3e5a125f224e        3 days ago          5.69 GB
isuper/java-oracle                 latest              4bbd500474b6        7 days ago          311 MB
tomcat                             latest              4452dae04daa        2 weeks ago         355 MB
mysql                              latest              22be5748ecbe        2 weeks ago         406 MB
ubuntu                             latest              0ef2e08ed3fa        2 weeks ago         130 MB
wnameless/oracle-xe-11g            latest              51fad6f11394        5 weeks ago         2.24 GB
192.168.227.134:5000/hello-world   test                48b5124b2768        2 months ago        1.84 kB
192.168.227.134:5000/hello-world   test1               48b5124b2768        2 months ago        1.84 kB
hello-world                        latest              48b5124b2768        2 months ago        1.84 kB
centos                             latest              67591570dd29        3 months ago        192 MB


kring@userver:~$ docker tag sath89/oracle-12c:latest 192.168.227.134:5000/sath89/oracle-12c

kring@userver:~$ docker push 192.168.227.134:5000/sath89/oracle-12c
The push refers to a repository [192.168.227.134:5000/sath89/oracle-12c]
82c8c528e609: Pushed
e276bf45da60: Pushed
032e683277c4: Pushed
105daf83e29c: Pushed
0488c9e2de86: Pushed
5f70bf18a086: Pushed
1f253a0703ec: Pushed
80ec921b230b: Pushed
227021bc9aa6: Pushed
latest: digest: sha256:d6ebb5f95352169731c5f8b3fa71e2b60f693c40f18e7f03cdeacafc363d904d size: 3022

push有可能会遇到 “server gave HTTP response to HTTPS client”,这个问题可能是由于客户端采用https,docker registry未采用https服务所致。
解决方案:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

{ "insecure-registries":["192.168.1.100:5000"] }

保存退出后,重启docker。

查看镜像列表

curl http://192.168.227.134:5000/v2/_catalog