jrldc 发表于 2017-1-3 18:28:52

搭建docker私有仓库

环境准备
环境:两个装有Docker的centos7虚拟机
虚拟机一:192.168.99.119 用户开发机
虚拟机二:192.168.99.109 用作私有仓库
此处我们准备了两个虚拟机,分别都安装了Docker,其中119用作开发机,109机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库

搭建私有仓库
首先在109机器上下载registry镜像
# docker pull registry
下载完之后我们通过该镜像启动一个容器
# docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:
# docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
C:\Users\Administrator\AppData\Local\YNote\data\qq41E380972A3128D92AECC7E981CEFD76\2c5b1edf01d048caa07eea1735fff2f0\05142700330.jpeg
可以看到我们启动了一个容器,地址为:192.168.99.109:5000。

测试
接下来我们就要操作把一个本地镜像push到私有仓库中。首先在119机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
$ sudo docker pull busybox
C:\Users\Administrator\AppData\Local\YNote\data\qq41E380972A3128D92AECC7E981CEFD76\1a5ef83b528c47639784db78ca92f082\05142818687.jpeg
接下来修改一下该镜像的tag。
$ sudo docker tag busybox 192.168.99.109:5000/busybox
C:\Users\Administrator\AppData\Local\YNote\data\qq41E380972A3128D92AECC7E981CEFD76\4b52ce62c9f543dab69a16826e951d99\05142942508.jpeg
接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 192.168.99.109:5000/busybox
C:\Users\Administrator\AppData\Local\YNote\data\qq41E380972A3128D92AECC7E981CEFD76\d80ea396048c4704b2f9d19112aeb7a9\05143057014.jpeg
可以看到push失败,具体错误如下:
# docker push 192.168.99.109:5000/busybox
The push refers to a repository
unable to ping registry endpoint https://192.168.99.109:5000/v0/
v2 ping attempt failed with error: Get https://192.168.99.109:5000/v2/: http: server gave HTTP response to HTTPS client
v1 ping attempt failed with error: Get https://192.168.99.109:5000/v1/_ping: http: server gave HTTP response to HTTPS client
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改132机器的配置)Ubuntu下配置文件地址为:/etc/systemconfig/docker,在其中增加–insecure-registry 192.168.99.109:5000如下所示:
# cat/etc/sysconfig/docker
# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
#OPTIONS='--selinux-enabled --log-driver=journald'
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
OPTIONS='--selinux-enabled --insecure-registry 192.168.99.109:5000'
DOCKER_CERT_PATH=/etc/docker
..........

docker pull 192.168.112.136:5000/busybox
# docker images
REPOSITORY                                          TAG               IMAGE ID            CREATED             SIZE
192.168.99.109:5000/busybox                           latest            e02e811dd08f      10 weeks ago      1.093 MB

管理仓库中的镜像
查询
如果我们想要查询私有仓库中的所有镜像,使用docker search命令:
# docker search registry_ip:5000/
如果要查询仓库中指定账户下的镜像,则使用如下命令:
# docker search registry_ip:5000/account/
同时也可以指定镜像查询。
删除
目前尚未找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,但是并不能成功删除镜像。


boboge 发表于 2017-1-13 12:09:10

很好,学习了!
页: [1]
查看完整版本: 搭建docker私有仓库