docker仓库分公有和私有之分,本文主要介绍如何搭建私有仓库
1. 简介
Docker仓库,类似于yum仓库,是用来保存镜像的仓库。为了方便的管理和使用docker镜像,可以将镜像集中保存至Docker仓库中,将制作好的镜像push到仓库集中保存,在需要镜像时,从仓库中pull镜像即可。
Docker 仓库分为公有云仓库和私有云仓库
公有云仓库:由互联网公司对外公开的仓库
官方
- 阿里云等第三方仓库
私有云仓库:组织内部搭建的仓库,一般只为组织内部使用,常使用下面软件搭建仓库
docker registory
docker harbor
2.1 从dockerhub推送/拉取镜像
1.1 注册dockerhub创建账号 :https://hub.docker.com/
docker push addmoney2018/learndocker:tagname
You can push a new image to this repository using the CLI
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
Make sure to change tagname with your desired image repository tag.
1.2 在本地通过commit容器保存或者dockerfile构建一个镜像
1.3 本地登录dockerHub :docker login,登录后生成~/.docker/config.json文件保存验证信息
1.4 检查镜像名是否符合dockerHub要求的,如不行,修正,再上传镜像
docker tag old-image:tagename addmoney2018/learndocker:20201212
docker push addmoney2018/learndocker:20201212
1.5 从dockerHub上拉取镜像
docker login
docker pull addmoney2018/learndocker
2. 2 创建组织和团队赋权共同管理仓库
组织类似于名称空间,每个组织的名称全网站唯一,一个组织可以有多个用户帐户使用,并且可以指定不同用户对组织内的仓库不同的权限
三种不同权限
Read-only:Pull and view repository details and builds
Read &Write:Pull, push, and view a repository; view, can��������,���̲���cel, retry or trigger builds
- Admin:Pull, push, view, edit, and delete a repository; edit build settings; update the repository description
2.2.1 创建组织
2.2.2 组织下创建团队
2.2.3 为团队下的仓库配置权限
2.2.4 本地将镜像上传到指定的组织
docker login# 先将镜像名改成:docker.io/组织名/镜像名:标签docker tag local_images docker.io/beijingdream:v1# 推送docker push docker.io/beijingdream:v1# 其他机器拉取docker pull docker.io/beijingdream:v1
注:还有一种是用阿里云的仓库,大体逻辑一致,请自行百度学习
3. 搭建自己的私有仓库
* 私有云单机仓库Docker Registry【官方提供】
Docker Registry作为Docker的核心组件之一负责镜像内容的存储与分发,客户端的docker pull以及push命令都将直接与registry进行交互,go开发后改项目名为Distribution
官方文档:https://docs.docker.com/registry/
源码GitHub地址:https://github.com/docker/distribution
官方部署文档:https://github.com/docker/docker.github.io/blob/master/registry/deploying.md
参考文档:https://yeasy.gitbook.io/docker_practice/repository/registry
3.1 从dockerHub上拉取docker registry镜像
docker pull registry:latest
3.2 启动容器运行仓库
docker run -d \-p 5000:5000 \--name my_registry--restart=always \-v /opt/data/registry_dir:/var/lib/registry \ registry:latest# 私有仓库容器里默认创建在/var/lib/registry里,通过映射就将所有的镜像文件保存到宿主机对应的目录里进行持久化防止因容器挂了数据丢失
3.3 在使用端修改docker配置文件,配置仓库地址
vim /etc/docker/daemon.json{"data-root" : "/app/lib/docker" ,"registry-mirrors": ["192.168.0.100:5000"], # 加速的地址"insecure-registries" : ["192.168.0.100:5000"]}# 保存配置,重启dockersystemctl restart docker# 重新启动registry生成容器
3.4 将本地镜像推送到私有仓库
docker tag centos 192.168.0.100:5000/centos:v1docker push 192.168.0.100:5000/centos:v1
3.5 查看仓库情况
官网文档:https://docs.docker.com/registry/spec/api/#listing-repositories
# 只有api,没有可视化界面http://192.168.0.100:5000/v2/_catalog
- 分布式私有仓库harbor
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中。
vmware官方开源服务:https://vmware.github.io/
harbor 官方github 地址:https://github.com/vmware/harbor
harbor 官方网址:https://goharbor.io/
harbor官方文档:https://goharbor.io/docs/
Harbor功能官方介绍
-基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限
-镜像复制:镜像可在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景
-图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间
-AD/LDAP 支:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理
-审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理
-国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来
-RESTful API:提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易
-部署简单:提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备
具体的部署,可自行百度!