docker本地私有库和harbor仓库

目录

docker仓库

一、docker私有仓库

Ⅰ、安装运行

Ⅱ、上传镜像

Ⅲ、拉取私有库镜像

二、harbor仓库

Ⅰ、前提需要

Ⅱ、创建证书文件

Ⅲ、下载安装harbor

Ⅳ、harbor的管理

Ⅴ、浏览器访问管理

①登录

报错

②上传镜像

③拉取镜像


docker仓库

仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。

一、docker私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

Ⅰ、安装运行

mkdir -p /opt/registry 创立挂载点
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 registry:2
#直接运行run,让docker拉取镜像
docker images

docker本地私有库和harbor仓库_第1张图片

 确保容器处于运行状态,我们在浏览器上对本地5000端口进行访问

docker本地私有库和harbor仓库_第2张图片

Ⅱ、上传镜像

 要将镜像上传到私有仓库,需要给镜像打上特定的tag,否则就是上传至公共仓库

docker tag centos:7 lcalhost:5000/centos:7

进行上传

docker push localhost:5000/centos:7

在命令行或浏览器上进行查看

curl -XGET http://192.168.116.22:5000/v2/_catalog

{"repositories":["centos"]}

docker本地私有库和harbor仓库_第3张图片

表示上传成功

Ⅲ、拉取私有库镜像

 先删掉本地源镜像,再进行镜像拉取

docker pull localhost:5000/centos:7

docker本地私有库和harbor仓库_第4张图片

私人库镜像拉取成功 

二、harbor仓库

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求

Ⅰ、前提需要

先进行docker-compose的下载安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

Ⅱ、创建证书文件

openssl genrsa -des3 -out server.key 2048
#生成密钥文件
openssl req -new -key server.key -out server.csr
#生成证书请求文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
#生成根证书

将证书文件存放到/data/cert(配置文件中指定) 

mv server.* ./data/cert/

Ⅲ、下载安装harbor

wget https://github.com/vmware/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz

Release v2.3.5 · goharbor/harbor · GitHub 

解压、修改配置文件;运行 install.sh 构建镜像,并把服务启动起来

tar -zxvf harbor-offline-installer-v1.2.2.tgz -C /opt

vim /opt/harbor-offline-installer-v1.2.2.tgz/harbor.cfg
#==================省略部分内容=========================
hostname = 192.168.116.22  
#用于访问用户界面和register服务,不能是localhost/0.0.0.0
#==================省略部分内容=========================
db_password = root123
#数据库密码
#==================省略部分内容=========================
harbor_admin_password = Harbor12345
#admin用户的密码
#==================省略部分内容=========================
ssl_cert = ./data/cert/server.crt
ssl_cert_key = ./data/cert/server.key
#上文证书的存放目录
#==================省略部分内容=========================
secretkey_path = ./data
#==================省略部分内容=========================

----wq


./install.sh
#进行安装

docker本地私有库和harbor仓库_第5张图片

docker-compose ps

docker本地私有库和harbor仓库_第6张图片

Ⅳ、harbor的管理

使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与docker-compose.yml 相同的目录中运行。

修改harbor配置文件流程:

1.停止现有的 harbour 实例并更新 harbor.cfg
2.运行 prepare 脚本来填充配置
3.重新创建并启动 harbour 的实例

docker-compose ps -a
#查看docker-compose容器情况
docker-compose down -v
#卸载Harbor
docker-compose up -d
#启动Harbor
docker-compose start
#启动相关容器
docker-compose stop
#关闭相关容器

Ⅴ、浏览器访问管理

①登录

 在浏览器上访问http://192.168.116.22

docker本地私有库和harbor仓库_第7张图片

报错

http页面错误码:502

docker本地私有库和harbor仓库_第8张图片

经过排查,发现harbor启动的容器之一adminserver一直处于restarting状态

docker本地私有库和harbor仓库_第9张图片

通过查看日志信息

cat /var/log/2022-10-20/adminserver.log

可以发现,问题出在docker-compose.yml文件里的这个位置

docker本地私有库和harbor仓库_第10张图片 解决:检查harbor.cfg和docker-compose.yml中对应的目录位置是否都一样

进行登录操作,用户admin,密码在前面编辑的harbor.cfg文件中

docker本地私有库和harbor仓库_第11张图片

②上传镜像

 创建项目docker本地私有库和harbor仓库_第12张图片

 此时可使用docker命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Register 服务器在端口 80 上侦听

docker tag tomcat:test 192.168.116.22/myproject-free/tomcat:test

docker images
REPOSITORY                            TAG   IMAGE ID      CREATED       SIZE
192.168.116.22/myproject-free/tomcat  test  7537d2b4b9e1  45 hours ago  807MB

docker login -u admin -p Harbor12345 http://127.0.0.1
#登录harbor库

docker push 192.168.116.22/myproject-free/tomcat:test

此时,发生报错

当我们使用127.0.0.1代替我们的本地IP时,又可以正常执行了, 但如果其他客户端上传或拉取镜像到 Harbor,就又会报如下错误。出现这问题的原因 Docker Registry 交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时这样的错误

 解决

vim /usr/lib/systemd/system/docker.service
ExecStart= ** //--insecure-registry 192.168.116.22 **

docker本地私有库和harbor仓库_第13张图片

systemctl daemon-reload

systemctl restart docker

重启后如果docker-compose up -d,仍有容器一直处于重启(restarting),可以尝试去到harbor目录下重新./install.sh

再次尝试上传镜像;登录成功

docker本地私有库和harbor仓库_第14张图片

 镜像上传成功docker本地私有库和harbor仓库_第15张图片

 docker本地私有库和harbor仓库_第16张图片

③拉取镜像

将192.168.116.22/free/centos:7镜像删除 

docker本地私有库和harbor仓库_第17张图片

从我们的harbor库中重新拉取这个镜像

docker pull 192.168.116.22/free/centos:7

拉取成功 

docker本地私有库和harbor仓库_第18张图片

你可能感兴趣的:(Docker,docker,运维,容器)