1.docker仓库

仓库(Repository)是集中存放镜像的地方

1.1公共仓库

所有人都可以访问的一个远程docker仓库,该仓库中的所有镜像都是公开的,供下载使用
docker官方维护的公共仓库:
docker hub
国内的一些docker公共仓库:
DaoCloud
阿里云

1.2私有仓库

只有个人或团队内部的docker仓库,只有本地局域网的主机或通过授权的用户可以访问该仓库

几种搭建私有仓库的方案:
1.docker官方提供的搭建私有仓库工具registry
2.harbor私有仓库

1.2.1为什么要搭建私有仓库

  • 公共仓库的镜像虽然多,但是没有针对于自己生产环境的镜像,不同生产环境对于镜像有不同需求
  • 上传自己生产环境的镜像至公共仓库,任何人都可以下载,没有私密性、安全性
  • dockerhub公共仓库毕竟是远程服务器,在下载连接速度会受到很大影响,影响工作效率

2.利用registry搭建私有仓库

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了

#拉去registry镜像
docker pull registry
#启动registry容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregirstry 678
##容器内默认/var/lib/registry用于存放上传的镜像,将其做挂载便于在宿主机查看,服务端口为5000做映射,678为镜像ID

访问网址192.168.58.20:5000/v2
可以查看到存储在仓库内的镜像

3.harbor私有仓库

  • Harbor是VMware公司的开源级的企业级DockerRegistry(仓库)项目
  • Harbor的目标是帮助用户迅速搭建一个企业级的DockerRegistry服务。
  • Harbor以docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access
    Control),AD/LDAP集成,以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。
  • Harbor的每个组件都是以Docker容器的形式构建的,使用docker-compose来对它进行部署。
  • Docker harbor有可视化的web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能

3.1优点

  1. 基于角色控制:用户与Docker镜像仓库通过"项目"进行组织管理,一个用户可以对多个镜像仓库在统一命名空间(projec)里有不同的权限
  2. 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间
  3. 审计管理:所有这怒地镜像仓库的错都可以被记录追溯,用于审计管理
  4. 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制。
  5. 支持LDAP认证:Harbor的用户授权可以使用已经存在的用户。
  6. 镜像删除和垃圾回收:image可以被删除并且回收image占用的空间。
  7. 简单的部署功能:harbor提供了online、offline安装,此外还提供了virtualappliance安装
  8. harbor和docker registry的关系:harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

3.2搭建harbor私有仓库

确保docker-compose可以正常使用
harbor的各个组件用docker-compose构建为容器

which docker-compose
/usr/local/bin/docker-compose

docker-compose version
#查看版本信息

部署harbor

tar -zxvf harbor-offline-installer-v1.2.2.tgz
cd harbor/
vi harbor.cfg
hostname = 192.168.58.30	#修改主机名为本机IP

sh install.sh		#使用其自带脚本部署harbor

登录192.168.58.30
默认账户名:admin
默认密码:Harbor12345
在这里插入图片描述
点击+项目,添加私有仓库
在这里插入图片描述
设置仓库名及设置公有/私有
在这里插入图片描述
此时创建好名为test的私有仓库
在这里插入图片描述
点击管理test仓库,点击推送镜像可查看推送镜像至此仓库方法
在这里插入图片描述
添加可使用此仓库的成员
在这里插入图片描述

3.3 harbor仓库公开和私有区别

若设为公开,所有人只需指定该仓库都可以推送及拉取该仓库的镜像,无需登录(docker login)该仓库

若设为私有,只有该仓库成员才可以登录该仓库并进行推送拉去镜像的操作
该仓库成员可在harbor管理界面添加用户,并加入该仓库的成员中。

3.4 harbor仓库维护及使用

可使用harbor目录下自带的工具来管理
工具为可供docker-compose控制的yml文件
在这里插入图片描述
需要修改harbor配置文件
若要修改harbor的配置文件,需先停止现有的harbor示例,然后运行prepare脚本来重新配置

docker-compose down -v	#移除harbor服务容器同时保留镜像数据/数据库数据,移除容器、挂载卷、网络
vi harbor.cfg
...
...

./prepare		#重新配置启动容器启动服务

如需要重新部署harbor,需要移除harbor服务容器所有数据
持久数据,如镜像,数据库,日志

rm -rf /data/database/
rm -rf /data/registry/
rm -rf /var/log/Harbor/

推送及拉取镜像

docker login 192.16858.30		#登录该harbor仓库服务器
Username:
Password:
##交互输入登入账户密码,也可在登录时用-u指定用户名、-p指定密码

#修改镜像标签,用于上传镜像
docker tag nginx:latest 192.168.58.30/test/nginx:n1
#推送
docker push 192.168.58.30/test/nginx:n1
#拉取
docker pull 192.168.58.30/test/nginx:n1

其他机器远程登录该仓库
-需修改docker.service文件,Docker Registry 交互默认使用的是 HTTPS,但是搭建私有仓库默认使用的是 HTTP 服务,所以与私有镜像交互时会报错

vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// -- insecure-registry 192.168.58.30 -- containerd=/run/containerd/containerd.sock

systemctl restart docker
GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 6 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐