Docker私有仓库搭建

作者:xcbeyond
疯狂源自梦想,技术成就辉煌!微信公众号:《程序猿技术大咖》号主,专注后端开发多年,拥有丰富的研发经验,乐于技术输出、分享,现阶段从事微服务架构项目的研发工作,涉及架构设计、技术选型、业务研发等工作。对于Java、微服务、数据库、Docker有深入了解,并有大量的调优经验。












0.前言

     在实际Docker使用场景下,尤其是在企业内部,一般生产环境是不允许直接访问外网,这将导致从公共docker仓库下载镜像变的不可行,因此就需要搭建私有仓库供生产环境使用。
1.安装Docker Registry
(1)下载registry镜像

docker pull registry

(2)下载完后,启动容器

    [docker@docker registry]$ docker run -d --name registry -p 5000:5000 -v /home/docker/registry:/var/lib/registry/docker/registry registry
    b625c9b49a3509171fb6ee3f148a8136ba545e010b70bc4581ecb038a5684767

      默认情况下,会将仓库存放于容器内的/var/lib/registry/docker/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以一般情况下会指定本地一个目录挂载到容器内的/var/lib/registry/docker/registry下,此例中是挂载在宿主机的/home/docker/registry目录下。

    如果不清楚registry容器中存放仓库的目录,可以先不用挂载直接启动容器,然后登陆到容器内部,进行查看便知道了,然后在重新启动挂载即可。

2.测试

为了验证私有仓库是否搭建成功,则进行简单的测试。

(将本地镜像push至刚刚搭建的私有仓库中。)

标记本地镜像redis:

[docker@docker registry]$ docker tag redis 127.0.0.1:5000/redis

      

    docker tag : 标记本地镜像,将其归入某一仓库。
    语法:
        docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

将刚刚tag的redis镜像push到私有仓库

    [docker@docker registry]$ docker push 127.0.0.1:5000/redis
    The push refers to a repository [127.0.0.1:5000/redis]
    39deb50f8429: Pushed
    7c04eaab6a33: Pushed
    0c776a3ed246: Pushed
    54db18bc71cc: Pushed
    765d87ec3358: Pushed
    cdb3f9544e4c: Pushed
    latest: digest: sha256:30eff1a6c2bea8082342f7e5cd5ad6aeb1a087fd22bd3d9be338613c56ed4d65 size: 1571

则此时已成功将本地镜像上传到私有仓库。