玩转Docker----- 第三部-----------docker公有、私有仓库的搭建

本文介绍了如何搭建和管理Docker私有仓库,包括Docker仓库的概念、Docker Hub的使用、配置镜像加速器的方法,以及Registry的工作原理。详细讲解了私有仓库的搭建过程,包括TLS加密和用户认证,确保仓库安全。最后,演示了远程主机如何连接到Docker仓库。
摘要由CSDN通过智能技术生成

玩转Docker----- 第三部-----------docker公有、私有仓库的搭建

1.Docker 仓库

Docker仓库是用来包含镜像的位置,Docker提供一个注册服务器

(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。

Docker运行中使用的默认仓库是Docker Hub公共仓库。

仓库的出现是为了避免镜像太多难以管理的局面。
在这里插入图片描述
有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。
实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载
国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问

当然,用户也可以在本地网络内创建一个私有仓库
当用户创建了自己的镜像之后可以使用 push 命令将它上传到公有或者私有仓库,
这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

有时使用 Docker Hub 这样的公共仓库可能不方便,会侵犯到企业的隐私,所以我们可以搭建私人仓库去使用

2.Docker Hub

Docker Hub是Docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。

在这里插入图片描述
第一步:首先需要注册一个docker hub帐号:

访问https://hub.docker.com/

登录成功后注册一个账号,然后登录账号
在这里插入图片描述
创建仓库:

填写仓库名—选择public—create

在这里插入图片描述
此时我们已经在官方的仓库中创建了一个仓库,下面我们可以上传镜像到仓库中

第二步:登陆docker hub帐号

docker login

在这里插入图片描述
登陆成功后会自动生成以下文件,在这里存储了docker hub中的用户名和信息:

在这里插入图片描述
第三步:上传镜像到docker hub

先把镜像名改为用户名/镜像名的形式:
			docker tag busybox:latest 021129/busybox:latest

上传:
			docker push 021129/busybox

search搜索自己的用户名:
			docker search 021129

在这里插入图片描述
然后就可以看到用户021129上传的镜像了

配置镜像加速器

为什么要配置镜像加速器呢?

因为我们现在拉取的镜像都是从国外的网站拉取的镜像,因为docker的官网在国外。我们使用docker pull 拉取镜像是比较慢的,所以我们可以使用阿里云提供的镜像加速器,这样就加速了我们拉取镜像的速度。

步骤:

第一步:登陆阿里云,注册帐号,也可以使用支付宝或者淘宝等登陆方式。

找到镜像加速器
在这里插入图片描述

[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# ls
key.json
[root@server1 docker]# vim daemon.json
[root@server1 docker]# cat daemon.json 
{
   
  "registry-mirrors": ["https://eqyqr0h1.mirror.aliyuncs.com"]
}
[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]# systemctl restart docker

操作完成之后,我们拉取镜像的速度就快了。因为我们使用的是阿里云这个路径

[root@server1 docker]# docker pull nginx   拉取
可以看到速度明显提升了。。。。。。。

3.Registry的工作原理

在这里插入图片描述
index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

Docker Registry有三个角色,分别是index、registry和registryclient:

  1. index
    负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
    Web UI
    元数据存储
    认证服务
    符号化
  2. registry
    是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service 的Token的方式进行认证。
  3. Registry Client
    Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

4.三个典型情景

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.搭建私有仓库

在集群服务时,需要docker,如果此时还从外部镜像仓库中下载镜像,会十分缓慢

docker hub虽然方便,但是还是有限制:

需要internet连接, 速度慢
所有人都可以访问
由于安全原因企业不允许将镜像放到外网
好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库

私有仓库的优点:

  1. 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
  2. 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。如果需要安装registry v2,只需下载registry:2.2即可。
  3. Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库

导入registry镜像:

[root@server1 docker]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
486039affc0a: Pull complete 
ba51a3b098e6: Pull complete 
8bb4c43d6c8e: Pull complete 
6f5f453e5f2d: Pull complete 
42bc10b72f42: Pull complete 
Digest: sha256:7d081088e4bfd632a88e3f3bcd9e007ef44a796fddfe3261407a3f9f04abe1e7
Status: Downloaded newer image for registry:latest
[root@server1 docker]# docker images
registry                 latest              708bc6af7e5e        4 months ago        25.8MB

[root@server1 docker]# docker history registry:latest   # 查看构建历史
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
708bc6af7e5e        4 months ago        /bin/sh -c #(nop)  CMD ["/etc/docker/registr…   0B                  
<missing>           4 months ago        /bin/sh -c #(nop)  ENTRYPOINT ["/entrypoint.0B                  
<missing>           4 months ago        /bin/sh -c #(nop) COPY file:507caa54f88c1f38…   155B                
<missing>           4 months ago        /bin/sh -c #(nop)  EXPOSE 5000                  0B                  
<missing>           4 months ago        /bin/sh -c #(nop)  VOLUME [/var/lib/registry]   0B                  
<missing>           4 months ago        /bin/sh -c #(nop) COPY file:4544cc1555469403…   295B                
<missing>           4 months ago        /bin/sh -c #(nop) COPY file:21256ff7df5369f7…   20.1MB              
<missing>           4 months ago        /bin/sh -c set -ex     && apk add --no-cache…   1.28MB              
<missing>           4 months ago        /bin/sh -c #(nop)  CMD ["/bin/sh"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值