当前位置 : 主页 > 编程语言 > 其它开发 >

一起讨论docker(2)利用registry搭建私有仓库

来源:互联网 收集:自由互联 发布时间:2022-07-05
前言:在上篇一起讨论dokcer(1)的博客中提到了docker的内部三大核心,而利用registry搭建私有仓库就是三大核心之一。本文主要介绍的是利用registry搭建私有仓库,关于harbo的知识了解即

前言:在上篇一起讨论dokcer(1)的博客中提到了docker的内部三大核心,而利用registry搭建私有仓库就是三大核心之一。本文主要介绍的是利用registry搭建私有仓库,关于harbo的知识了解即可,关于搭建方法日后有机会再一起讨论介绍。

上篇博客链接:

一起讨论docker(1)之介绍与安装 - LIU-GC - 自由互联 (cnblogs.com)

一、私有仓库介绍:

1、Docker的内部三大核心概念:

1)镜像docker images:docker镜像是docker容器运行时的只读模板,镜像可以用来创建docker容器。

2)仓库docker repository:类似代码仓库,他是docker集中存放镜像文件的地方。

3)容器docker contains:利用容器运行,一个docker容器包含了所有的某个应用运行所需要的环境。

注意:镜像是只读的,容器在启动的时候,创建一层壳写作为最上层。

2、公共仓库vs私有仓库

2.1公共仓库

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

2.2 私有仓库

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

3、为什么要搭建私有仓库

 

1)公共仓库的镜像虽然多,但是没有针对于自己生产环境的镜像,不同生产环境对于镜像有不同需求

2)上传自己生产环境的镜像至公共仓库,任何人都可以下载,没有私密性、安全性,虽然可以在docker hub上申请私有repository,但是需要付费。

3)docker hub公共仓库毕竟是远程服务器,在下载连接速度会受到很大影响,影响工作效率,需要互联网、性能低。

 

4、搭建私有仓库的方案

docker官方提供的搭建私有仓库工具registry
harbor私有仓库

5、registry和harbor介绍

5.1 registry搭建私有仓库介绍

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

以下内容了解即可:

5.2 harbor私有仓库

 

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

即通俗理解为:

Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。

Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。

注意:Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。 5.3 harbor私有仓库优点:

(1)基于角色控制

(2)基于镜像的复制策略

(3)支持LDAP/AD,通过VPN连接域使用

(4)图像删除和垃圾收集

(5)图像UI

(6)审计

(7)RESTful API

 

二、利用registry搭建私有仓库

1、环境搭建

两台都装有dokcer-ce的centos7.9虚拟机

ip规划:

主机一(registry)172.17.8.11

主机二 (test)172.17.8.22

2、过程:

安全配置(两台主机都操作)

关闭防火强,selinux设置为宽松模式

systemctl stop firewalld.service && systemctl disable firewalld.service

setenforce 0

主机一:

1)开启路由转发

sysctl -p

net.ipv4.ip_forward = 1

2)下载私有仓库镜像

docker pull registry:2

3)重启docker服务

4)创建私有仓库目录

mkdir -p /opt/data/registry

5)运行容器,开启5000端口(端口映射)

docker run -itd -p 5000:5000 --restart always -v /opt/data/registry/:/var/lib/registry --name registry registry:2 

补充:

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-p 容器内用什么端口   5000本地端口

Restart always  容器遇到错误是自动重启

Never 不重启   Failure  只有报错才重启

-v  容器目录和物理机的目录相通,目录映射 /opt/data/registry 和容器内 /var/lib/registry (内存放的镜像)是一样的

6)检验容器内/仓库内镜像;

curl 172.17.8.11:5000/v2/_catalog

 

以下操作两个主机都需

配置私有仓库安全性

修改配置文件(不安全的镜像私有仓库)

vim /usr/lib/systemd/system/docker.service

13行

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.20.10.32:5000

注:ip地址为私有仓库镜像所在虚拟机的ip地址

重启服务

systemctl daemon-reload

systemctl restart docker

 

主机一:下载镜像在主机二做拉取测试

docker pull centos:7

镜像改名

docker tag centos:7 172.17.8.11:5000/centos-7

将本地镜像上传到镜像仓库

docker push 172.17.8.11:5000/centos-7

检验

curl 172.17.8.11:5000/v2/_catalog

 

主机二:从私有仓库中下载镜像测试

docker pull 172.17.8.11:5000/centos-7

docker images 查看

 

网友评论