第五章 镜像仓库

268 阅读3分钟

Registry

仓库(Repository)是集中存放镜像的地方,是一个管理镜像的服务,我们构建完的镜像,可以上传到相应的镜像仓库,然后通过网络进行下载分发等.就拿IPhone手机做类比,仓库就是App Store.Docker就是IPhone的操作系统IOS,而镜像就是应用商店里的应用程序

在实际应用中,运维同学创建好镜像仓库,由开发同学制作镜像,然后上传到镜像仓库.Docker Daemon守护进程在从镜像仓库拉取镜像,

镜像仓库分为公共仓库私有仓库

3.1 公有仓库

目前 Docker 官方维护了一个公有仓库 Docker Hub。由于我们之前已经在Docker Hub注册了一个账号,所以我们可以将我们自己制作的镜像上传到公有仓库中,

如果是在Linux系统下,我们需要使用以下步骤进行登录

  1. 在命令行中输入docker login 2) 在输入用户名与密码即可

image-20220113202148757.png

公有仓库是公开的,仓库里的镜像,所有人都可以进行拉取,对于企业首选私有镜像仓库

3.2 私有仓库

3.2.1 Docker Registry

Docker官方提供了docker-registry镜像,我们可以直接拉取部署该镜像,这是最简单的方式

image-20220111212823144.png

然后部署这个镜像,使用命令docker run -d -p 5000:5000 registry

image-20220111213244598.png

已经成功运行,接下来我们使用docker logs来看一下容器的日志

image-20220111213258387.png

由于该镜像没有Web控制台,所以如果要用到企业内部,还需要很多配套设置,比较麻烦,所以此方案不在多述.

3.2.2 Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部自有的镜像服务器.它具有以下特点

  1. 开源 2) 策略和角色访问,切支持LDAP/AD集成 3) 确保镜像被扫描并且没有漏洞 4) CNCF(云原生计算基金会) 5) 完整的Web控制面板

image-20220109223041401.png

对于Harbor的安装可以访问官方Harbor (goharbor.io)虽然自建镜像仓库虽然具有比较高的安全性,但是还需要投入硬件服务器存储等,对于使用量比较大的团队,可能还需要对镜像仓库做高可用配置,还有专业的运维同学负责维护,综合成本不算低,所以中小型团队可以直接使用国内各大云服务商提供的免费镜像仓库服务

3.2.3 云服务商

国内很多云服务商都会提供免费的镜像仓库,让大家免费试用,这里推荐使用阿里云的镜像服务.个人版使用免费

3.3 推送镜像

接下来,我们将学习如何推送镜像到镜像仓库,推送镜像使用docker push命令.

如果是推送Docker Hub命令格式如下

docker push Docker账号/镜像名称:tag

如果是推送至私有仓库,命令格式如下

docker push 地址/命名空间/镜像名称:tag

3.3.1 推送公用仓库

我们将2.8章节导入的nginx_new镜像上传到Docker Hub.

推送公有仓库的命令格式为docker push 账号/镜像名称:tag

  1. 对镜像打tag.a121984376为笔者的Docker账号 image-20220113204937618.png

  2. 推送镜像 image-20220113205119669.png

3.3.2 推送阿里云私有仓库

推送私有仓库主要有以下几步:

  1. 确认阿里云镜像服务地址,在阿里云->控制台->容器镜像服务首页可以看到

image-20220113205658634.png

  1. 在阿里云镜像服务创建命名空间

image-20220113210745250.png

  1. 对要导入的镜像打上tag,推送命令规则registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名称:tag

image-20220113210944225.png

  1. 登录公网 image-20220113205758078.png

  2. 推送镜像

image-20220113211041006.png

  1. 通过阿里云控制台查看推送的镜像 image-20220113211216636.png