什么是私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的仓库,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去. 但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Registry来做私有仓库,满足自己的需求.
环境: registry服务端:192.168.1.102 registry客户端:192.168.1.102
创建私有仓库 1.下载registry镜像 docker pull registry 2.默认会将仓库创建在容器的/tem/registry目录下,将他挂载到/data/docker/registry目录下 docker run -d -p 5000:5000 -v /data/docker/registry:/tmp/registry --name registry registry
管理私有仓库 1.查看现有的镜像 [root@baiyongjie ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest cd5239a0906a Less than a second ago 109 MB docker.io/registry latest d1fd7d86a825 4 months ago 33.3 MB 2.给nginx镜像重新打tag [root@baiyongjie ~]# docker tag docker.io/nginx:latest 192.168.1.102:5000/nginx 3.查看最新的镜像 [root@baiyongjie ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.1.102:5000/nginx latest cd5239a0906a Less than a second ago 109 MB docker.io/nginx latest cd5239a0906a Less than a second ago 109 MB 4.上传镜像 [root@baiyongjie ~]# docker push 192.168.1.102:5000/nginx The push refers to a repository [192.168.1.102:5000/nginx] Get https://192.168.1.102:5000/v1/_ping: http: server gave HTTP response to HTTPS client 这个问题是由于客户端采用https,docker registry未采用https服务所致 解决方法: 在daemon.json文件加入以下内容,用来解决验证问题 vim /etc/docker/daemon.json { "insecure-registries":["192.168.1.102:5000"] } 5.重新上传镜像 [root@baiyongjie ~]# docker push 192.168.1.102:5000/nginx The push refers to a repository [192.168.1.102:5000/nginx] 3ff93588120e: Pushed 24ee0a3fd4b9: Pushed d626a8ad97a1: Pushed latest: digest: sha256:1f9c00b4c95ef931afa097823d902e7602aebc3ec5532e907e066978075ca3e0 size: 948 6.查看仓库中的镜像 [root@baiyongjie ~]# curl http://192.168.1.102:5000/v2/_catalog {"repositories":["nginx"]} 7.获取镜像的标签列表 [root@baiyongjie ~]# curl http://192.168.1.102:5000/v2/nginx/tags/list {"name":"nginx","tags":["latest","0.1"]}
在客户端下载镜像 1.查看镜像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 2.修改daemon.json文件 vim /etc/docker/daemon.json {"insecure-registries":["192.168.1.102:5000"]} 3.重启docker服务 systemctl restart docker 4.下载镜像 [root@localhost ~]# docker pull 192.168.1.102:5000/nginx Using default tag: latest Trying to pull repository 192.168.1.102:5000/nginx ... latest: Pulling from 192.168.1.102:5000/nginx f2aa67a397c4: Pull complete 1cd0975d4f45: Pull complete 72fd2d3be09a: Pull complete Digest: sha256:1f9c00b4c95ef931afa097823d902e7602aebc3ec5532e907e066978075ca3e0 Status: Downloaded newer image for 192.168.1.102:5000/nginx:latest 5.查看镜像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.1.102:5000/nginx latest cd5239a0906a Less than a second ago 109 MB