Docker的Registry管理


layout: post
title: Docker的Registry管理
date: 2018-11-08 17:12:36
categories: Docker
catalog: true
tags:
- Docker Registry


回顾之前的笔记,给Registry的定义是:

Docker Registry 是一个集中存储与分发镜像的服务。构建完docker镜像后,就可在当前宿主机上运行。但如果想要在其它机器上运行这个镜像,就需要手动复制,此时可以借助Docker Registry来避免镜像的手动复制,其它人可以直接从 Registry 中将这个镜像 pull 到自己的本机中。

Docker的架构图:

Docker架构图

Docker Registry可分为公有与私有。最常用的Docker Registry就是官方的Docker Hub,这也是默认的Docker Registry。国内仓库有:daocloud,时速去,aliyun等。

查找镜像

[root@HJWDEV bin]# docker search whalesay
NAME                            DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
docker/whalesay                 An image for use in the Docker demo tutorial    644                                     
mendlik/docker-whalesay         Docker whalesay image from training material…   7                                       [OK]
nikovirtala/whalesay            Tiny Go web service to print Moby Dock ASCII…   1                                       [OK]
milanfort/whalesay              Modified docker/whalesay image that outputs …   1                                       
swinton/whalesay                whalesay, innit                                 1 

上述命令在Docker Hub 仓库中查找 whalesay 镜像。下面列出了在仓库中查询到的所有镜像信息如名字,描述,星,是否官方等。一般官方的星是最多的。

拉取镜像

[root@HJWDEV bin]# docker pull docker/whalesay

执行命令 docker 会把指定的镜像拉取到我们本地,使用docker images 可以查看到是否获取到镜像。

可以运行一下:

[root@HJWDEV bin]# docker run docker/whalesay cowsay Docker is cool! 
 _________________ 
< Docker is cool! >
 ----------------- 
    \
     \
      \     
                    ##        .            
              ## ## ##       ==            
           ## ## ## ##      ===            
       /""""""""""""""""___/ ===        
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
       \______ o          __/            
        \    \        __/             
          \____\______/  

推送镜像

这里就使用原先拉取下来的这个镜像做测试,更改其tag后 push 到仓库中

[root@HJWDEV bin]# docker tag docker/whalesay hjwjw/whalesay
[root@HJWDEV bin]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-docker        latest              be221a20a4d7        6 weeks ago         4.41MB
nginx-fun           latest              1d1aaf738af1        6 weeks ago         109MB
ubuntu              latest              cd6d8154f1e1        2 months ago        84.1MB
docker/whalesay     latest              6b362a9f73eb        3 years ago         247MB
hjwjw/whalesay      latest              6b362a9f73eb        3 years ago         247MB

可以看到产生了一个新的镜像 hjwjw/whalesay

在推送新镜像到仓库前需要登陆,登陆账号可以在 Docker Hub 上注册

[root@HJWDEV bin]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:

登陆成功后就可以进行推送了:

[root@HJWDEV bin]# docker push hjwjw/whalesay

推送成功后可以登陆 Docker Hub 查看。其它人可以查询到并拉取到自己本地运行。

私有仓库

上面说的都是在公有仓库,相比Docker Hub 私有仓库有以下优势:

  • 节省带宽,对于私有仓库已有的镜像无需再从Docker Hub 下载。
  • 更加安全
  • 便于内部镜像的统一管理

下面使用Docker Registry 2.0搭建一个私有仓库并上传一个镜像:

[root@HJWDEV ~]# docker run -d -p 5000:5000 --name registry2 registry:2

上述命令启动一个Docker Registry 2.0 .

默认情况下,会将私有仓库镜像存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失。
所以一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:

[root@localhost ~]# docker run -d --name=my_registry -p 5000:5000 -v /opt/data/registry:/tmp/registry docker.io/registry:2.2
9fe45329bda17f61da04e6e8d2faf124fb22665a25270421bb8979a419809446

下面修改一个镜像的tag 并把它推送到我们的私有仓库中:

[root@HJWDEV ~]# docker tag nginx-fun localhost:5000/hjwjw/nginx-fun

因为Docker Hub 是默认的Docker Registry,所以我们需要修改镜像的 tag 才能推送到自己的私有仓库。

[root@HJWDEV ~]# docker push localhost:5000/hjwjw/nginx-fun

推送成功后我们可以通过这个命令去查看 Docker registry 2中是否存在刚刚推送的镜像。

[root@HJWDEV ~]# curl -X GET http://127.0.0.1:5000/v2/_catalog
{"repositories":["hjwjw/nginx-fun"]}

也可以在浏览器中访问上述地址查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值