Docker Registry和Harbor单机部署使用

一、Docker Registry简介及实现

Docker Registry
1. Docker的核心组件之一,负责镜像内容的存储与分发;
2. distribution(新的 docker register 被 称为 Distribution)
3. go语言开发,Registry 2.4 版本以上支持删除镜像,最新版本:2.8.1
4. 没有web页面,不方便使用

官方文档地址:https://docs.docker.com/registry/
官方 github 地址:https://github.com/distribution/distribution

搭建单机仓库

1. 下载最新版本的镜像仓库
[root@szb web]# docker pull registry
2. 创建一个授权使用目录
[root@szb web]# mkdir -p /docker/auth
3. 创建一个用户并生成密码
cd /docker
docker run --entrypoint htpasswd registry -Bbn szb 123456 > auth/htpasswd 
上述有报错,新版本docker已不支持,改为:
docker run --entrypoint htpasswd httpd:2  -Bbn szb 123456 > auth/htpasswd
4. 启动registry
docker run -d -p 5000:5000 --restart=always --name registry1 \
-v /docker/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

报错:

报错:
[root@szb docker]# docker run --entrypoint htpasswd registry -Bbn szb 123456 > auth/htpasswd
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "htpasswd": executable file not found in $PATH: unknown.
解决方法:安装httpd-tools
 htpasswd -Bbn  user passwd > /home/docker/registry/auth/htpasswd

可参考:https://blog.csdn.net/weixin_41003771/article/details/118788131

测试

1. 客户端登录测试连通:
[root@iZ2zegmcgqbevwf0lb4amuZ docker]# docker login 124.222.155.194:5000
Username: szb
Password:
Error response from daemon: Get "https://124.222.155.194:5000/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)  # 仓库证书不可信

2. 解决:
vim /lib/systemd/system/docker.service
添加非安全的参数:--insecure-registry 192.168.10.205:5000
systemctl daemon-reload    # 加载配置
systemctl restart docker   # 重启

3. 再次访问--成功
[root@localcentos docker]# docker login 124.222.155.194:5000
Username: szb
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

在这里插入图片描述

以上测试连接正常,实战:打tag上传本地镜像到仓库,另外一个服务器下载使用
server1:
1. [root@localcentos docker]# docker login 124.222.155.194:5000  # 登录
2. [root@localcentos opt]# docker tag alpine:3.16 	# 打tag 124.222.155.194:5000/alpine:3.16
3.[root@localcentos opt]# docker push 124.222.155.194:5000/alpine:3.16 # 上传仓库

server2:
1.登录私有仓库
[root@szx ~]# docker login 124.222.155.194:5000
2.拉取远端镜像
[root@szx ~]# docker pull 124.222.155.194:5000/alpine:3.16
[root@szx ~]# docker images
3.测试运行
[root@szx ~]# docker run -it -d  --name docker_registry 124.222.155.194:5000/alpine:3.16

在这里插入图片描述

二、Harbor简介及单机部署

1、harbor介绍
1、Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器
2、功能:
	基于角色的访问控制
	镜像复制
	图形化用户界面
	AD/LDAP 
	审计管理
	国际化
	RESTful API - RESTful API
	部署简单

GitHub-harbor软件下载地址
harbor官方地址
在这里插入图片描述

nginx:harbor 的一个反向代理组件,代理 registry、ui、token 等服务。这个代 理会转发 harbor web 和 docker client 的各种请求到后端服务上。 
harbor-adminserver:harbor 系统管理接口,可以修改系统配置以及获取系统信 息。 
harbor-db:存储项目的元数据、用户、规则、复制策略等信息。 
harbor-jobservice:harbor 里面主要是为了镜像仓库之前同步使用的。 
harbor-log:收集其他 harbor 的日志信息。 
harbor-ui:一个用户界面模块,用来管理 registry。 
registry:存储 docker images 的服务,并且提供 pull/push 服务。 
redis:存储缓存信息 webhook:当 registry 中的 image 状态发生变化的时候去记录更新日志、复制等 操作。
token service:在 docker client 进行 pull/push 的时候负责 token 的发放。

下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

2、harbor的安装部署
安装步骤:
1、安装docker
2、安装docker-compose
3、部署harbor
4、配置docker的非安全的镜像仓库(此处是http,https忽略此处):
--insecure-registry 192.168.1.84
5、重启docker并登录
注意:harbor的1.7版本之前的配置方式一样,1.8版本开始和以前的不兼容
1、安装docker
简单安装:yum install -y docker
或者查看之前的安装部署
https://blog.csdn.net/szb521/article/details/125406984

2、安装docker-compose
最简单的安装方式:yum install -y docker-compose # 默认下载1.18.0版本,足够了
docker-compose --version # 查看下载的compose版本
3、部署harbor
在/usr/local/src/目录下,将包解压
压缩包下载地址:https://github.com/goharbor/harbor/releases
harbor-offline-installer-v2.5.2.tgz  # 此处下载此包
1)解压缩 
tar -xvf harbor-offline-installer-v2.5.2.tgz && cd harbor
cp harbor.yml.tmpl harbor.yml  # 默认配置文件需要改为.yml结尾的文件

2) 修改ip地址、邮件和密码(此处邮件可忽略)
vim harbor.yml  # 修改配置文件
hostname 192.168.1.84
harbor_admin_password: 123456  (默认密码Harbor12345)

3) 注释https,具体看图片
4)启动安装
./install

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

4、客户端访问,需要配置docker的非安全的镜像仓库(此处是http,https忽略此处):
vim /lib/systemd/system/docker.service
在这后面添加:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
添加非安全的参数:--insecure-registry 192.168.1.84(访问的宿主机ip或者域名)

5、重启docker并登录
systemctl daemon-reload    # 加载配置
systemctl restart docker   # 重启docker
关于harbor的启动、停止
1. harbor的启动
docker-compose up -d
2.停止并移除资源harbor
$ docker-compose down
3、报错分享
1、安装报错
报错:安装docker-compose时,No package docker-compose available. Error: Nothing to do
解决办法:
思路:一般先更新:yum -y update ;添加依赖仓库:yum -y install epel-release


2、报错:推送失败
unauthorized: unauthorized to access repository: linux/nginx, action: push: unauthorized to access repository: linux/nginx, action: push
原因:没登录
解决办法: docker login 124.222.155.194

3、报错:推送失败
The push refers to repository [124.222.155.194/linux/nginx]
Get "https://124.222.155.194/v2/": dial tcp 124.222.155.194:443: connect: connection refused
原因:证书接口使用错了
解决办法:--insecure-registry 124.222.155.194:5000改为
--insecure-registry 124.222.155.194(默认80端口)

4、核心服务报错,没解决掉:思路可参考
https://blog.csdn.net/qq_29974229/article/details/125257797
[root@szx harbor]# tail /var/log/harbor/core.log

1[/core/main.go:221]: failed to migrate the database, error: please upgrade to version 1.10 first

2[ERROR] [/lib/cache/cache.go:110]: failed to ping redis://redis:6379?idle_timeout_seconds=30, retry after 10s : dial tcp: lookup redis on 127.0.0.11:53: no such host

5、同步复制失败,可参考:
https://blog.csdn.net/AINI21aini21/article/details/122622809
4、测试上传下载功能
前提条件:
一台客户端访问,首先添加非安全的参数:--insecure-registry 目标ip,参考安装部署的4、5
vim /lib/systemd/system/docker.service

上传镜像

1. 先登录
docker login ip

2. 打tag
docker tag SOURCE_IMAGE[:TAG] 124.222.155.194/linux/REPOSITORY[:TAG]

3. 推送push 
docker push 124.222.155.194/linux/REPOSITORY[:TAG]

下载镜像

docker pull 124.222.155.194/linux/REPOSITORY[:TAG]  # 不需要登录
5、harbor同步复制

部署步骤参考上述
web页面需要配置的是:

仓库管理--> 新建目标
目标名:对方存在的项目名称
可以测试:对面是否连接成功

在这里插入图片描述

复制管理 --> 新建规则
可以根据需求设备目标仓库和对应的目标名称空间
设置定时同步时间

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种开源的容器化平台,用于构建、打包和运行应用程序。它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后在任何环境中运行。Kubernetes(简称K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它提供了一种容器编排的方式,可以管理多个Docker容器,并提供高可用性、弹性伸缩和自动化的功能。Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。它提供了权限管理、LDAP集成、日志审核、镜像复制等功能,可以帮助企业更好地管理和控制Docker镜像的使用。在部署Kubernetes集群时,使用Harbor作为私有仓库可以提供更安全和高效的镜像管理。 #### 引用[.reference_title] - *1* [从harbor部署到在k8s中使用](https://blog.csdn.net/weixin_30594001/article/details/99919660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [k8s ---Docker镜像仓库Harbor部署使用](https://blog.csdn.net/Horizon_carry/article/details/108561846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用](https://blog.csdn.net/ywq935/article/details/83347026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值