Docker 私有仓库搭建

Docker 私有仓库搭建

简介

Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器 Register来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
官网详情:https://docs.docker.com/registry/deploying/

Registry工作原理

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

Docker Registry有三个角色,分别是index、registry和registry client。

  • index
    负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。

    • Web UI
    • 元数据存储
    • 认证服务
    • 符号化
  • registry

    • 是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
  • Registry Client

    • Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

【注】:
docker 阿里云镜像加速器:
登陆阿里云 -> 控制台 -> 产品与服务 -> 容器镜像服务 -> 镜像工具 -> 镜像加速器

  • 情景A:用户要获取并下载镜像
    在这里插入图片描述- 情景B:用户要推送镜像到registry中
    在这里插入图片描述- 情景C:用户要从index或registry中删除镜像。
    在这里插入图片描述

harbor 简介

详情参照官网:https://github.com/goharbor/harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。

参考文献:https://www.cnblogs.com/wangzhangtao/p/12076816.html#7797-1576752979530

harbor 下载:
https://github.com/goharbor/harbor/releases
部署:(依赖性 docker 17.06.0-ce+ and docker-compose 1.18.0+)

Docker-compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。

  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

compose 下载:
https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/

最佳实验

主机ip
server1172.25.9.1
server2172.25.9.2

运行本地注册表

# 配置阿里云的镜像加速器
vim /etc/docker/daemon.json
{
	"registry-mirrors": ["https://71gte742.mirror.aliyuncs.com"]
}

systemctl reload docker.service 

# 拉取 registry 镜像
docker pull registry

# 运行名为 registry 端口映射 5000-> 5000 的 registry 镜像
docker run -d --name registry -p 5000:5000 registry

# 拉取官方的nginx 镜像进行测试
docker pull nginx

# 镜像修改名字
docker tag nginx:latest localhost:5000/nginx:latest

# 上传镜像本地仓库
docker push localhost:5000/nginx:latest 

# 测试是否上传成功
curl localhost:5000/v2/_catalog

# 出现 {"repositories":["nginx"]} 表示上传成功


# 现在停止您的注册表并删除所有数据
docker container stop registry && docker container rm -v registry

运行远程注册表

# 生成自签名证书
cd /etc/docker/
mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/reg.westos.org.key -x509 -days 365 -out certs/reg.westos.org.crt

# 新建registry 
docker run -d  \
--restart=always \
--name registry  \
-v "$(pwd)"/certs:/certs  \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=certs/reg.westos.org.crt \
-e REGISTRY_HTTP_TLS_KEY=certs/reg.westos.org.key \
-p 443:443 \
registry

# 手动建立证书存放目录,复制之前生的自签名证书
mkdir -p /etc/docker/certs.d/reg.westos.org/
cp certs/reg.westos.org.crt certs.d/reg.westos.org/ca.crt

#添加解析 
vim /etc/hosts
172.25.9.1      server1 reg.westos.org


# 修改 nginx 镜像名,上传测试
docker tag  nginx:latest  reg.westos.org/nginx:latest
# 上传成功则部署成功
docker push reg.westos.org/nginx:latest
 
# serer1 复制证书到远端
scp -r certs.d root@server2:/etc/docker

# server2 测试
# server2 添加解析
vim /etc/hosts
172.25.9.1      server1 reg.westos.org

docker pull reg.westos.org/registry

用户认证

# 生成认证用户
yum install -y httpd-tools
htpasswd -B -c auth/htpasswd admin
htpasswd -B auth/htpasswd tom
# 强制删除之前的 registry
docker rm -f registry

# 重新构建 registry
docker run -d \
--name registry \
-p 443:443 \
-v /opt/rgistry:/var/lib/registry \
-v "$(pwd)"/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/reg.westos.org.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/reg.westos.org.key \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
registry

# 未登陆直接上传,会报错   no basic auth credentials
# 登陆
docker login reg.westos.org
# 登陆信息存放的地方  
cat /root/.docker/config.json
# 上传
docker push reg.westos.org/nginx:latest

harbor 部署

安装

# 下载 docker-compose 工具,并给予执行权限
mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose 

# 配置 harbor
tar zxf harbor-offline-installer-v1.10.1.tgz
cd harbor/
# 修改配置文件,指定主机名,和证书存放的位置
vim harbor.yml 
……
hostname: reg.westos.org
……
  certificate: /certs/reg.westos.org.crt
  private_key: /certs/reg.westos.org.key
……

# 之前生成证书在 /etc/docker/ 目录下,移动到根下,或者修给 harbor 配置文件中的路径为该路径。
cd /etc/docker/
cp certs / -r

# 删除之前实验的 registry
docker rm -f registry

# 安装 harbor 
cd /root/harbor/
./install.sh

# docker-compose 查看状态都为 up 则成功
docker-compose ps

harbor 上传测试

# 上传必须登陆
docker login reg.westos.org
	admin
	westos
# 修改镜像标签,并上传。reg.westos.org/library/ubuntu:latest (reg.westos.org : 主机、library : 默认发布目录、ubuntu:latest : 镜像名字)
docker tag reg.westos.org/ubuntu:latest reg.westos.org/library/ubuntu:latest
docker push  reg.westos.org/library/ubuntu:latest

harbor 远程拉取测试

serer2

# 镜像拉取,加速器,优先从私有仓库拉取
vim /etc/docker/daemon.json
{
        "registry-mirrors": ["https://reg.westos.org"]
}

#添加解析 
vim /etc/hosts
172.25.9.1      server1 reg.westos.org
# 重新加载配置文件
systemctl reload docker.service
# 拉取镜像,拉取时提示 latest: Pulling from library/ubuntu ,表示私有仓库拉取成功
docker pull ubuntu

harbor 插件

  • –with-notary :内容信任,签名
  • –with-clair :安全扫描
  • –with-chartmuseum : helm 仓库
cd /root/harbor/
# 重新安装之前,先停止已经存在harbor 
docker-compose stop
# 根据需求添加相应的插件
./install.sh --with-notary --with-clair --with-chartmuseum
# docker-compose 查看状态都为 up 则成功
docker-compose ps

截图

本地注册表

在这里插入图片描述在这里插入图片描述

远程注册表

在这里插入图片描述在这里插入图片描述在这里插入图片描述

用户认证

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

harbor 私有仓库

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

harbor 插件

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值