centos7部署企业镜像仓库 Harbor

Harbor 仓库介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。
Harbor是由VMware公司开源的企业级的Docker
Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

Harbor核心组件解释

Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
UI:提供图形化界面,帮助用户管理registry上的镜像,并对用户进行授权。
jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry
pull镜像然后push到另一个registry,并记录job_log。
Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
Registry:镜像仓库,负责存储镜像文件。
Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

Harbor和Registry的比较

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1.提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2.提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3.支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4.良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5.Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

安装harbor仓库

下载harbor离线安装包
官方Github下载地址: https://github.com/goharbor/harbor/releases
那下载速度十分感人啊,为此下载好后,特贴网盘下载 提取码: b7zv

将离线安装包harbor-offline-installer-v1.10.6.tgz下载到电脑上,执行以下命令解压

 tar -zxvf harbor-offline-installer-v1.10.6.tgz  -C /usr/local/
 cd !$/harbor

解压的结果是个名为harbor的文件夹,进入该文件夹;

修改配置文件harbor.yml,
主要是修改以下两个配置:hostname:填写本机的IP地址,如果绑定了域名也可以填域名;
harbor_admin_password:管理员初始密码;
更多配置例如https、存储等,请参考官方文档按需设置;
在这里插入图片描述
在这里插入图片描述

配置文件修改完毕后,我们继续下一步
可以看到目录下有2个可执行文件,一个安装,一个检查环境
在这里插入图片描述

1.检测harbor

./prepare

2.安装harbor

./install.sh

提示如下图,就表示安装完毕!
在这里插入图片描述

查看一下运行容器

1.docker-compose

[root@localhost harbor]# docker-compose ps --all
      Name                     Command                  State                 Ports          
---------------------------------------------------------------------------------------------
harbor-core         /harbor/harbor_core              Up (healthy)                            
harbor-db           /docker-entrypoint.sh            Up (healthy)   5432/tcp                 
harbor-jobservice   /harbor/harbor_jobservice  ...   Up (healthy)                            
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp                 
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp     
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp                 
registry            /home/harbor/entrypoint.sh       Up (healthy)   5000/tcp                 
registryctl         /home/harbor/start.sh            Up (healthy)                    

2.docker ps

[root@localhost harbor]# docker ps --all
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                       NAMES
e128be235e97        goharbor/nginx-photon:v1.10.6         "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes (healthy)   0.0.0.0:80->8080/tcp        nginx
b76966e5c2f8        goharbor/harbor-jobservice:v1.10.6    "/harbor/harbor_jobs…"   28 minutes ago      Up 28 minutes (healthy)                               harbor-jobservice
807ca451c713        goharbor/harbor-core:v1.10.6          "/harbor/harbor_core"    28 minutes ago      Up 28 minutes (healthy)                               harbor-core
bcdf63c0a612        goharbor/redis-photon:v1.10.6         "redis-server /etc/r…"   28 minutes ago      Up 28 minutes (healthy)   6379/tcp                    redis
cc4f03952326        goharbor/harbor-portal:v1.10.6        "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes (healthy)   8080/tcp                    harbor-portal
bc0dafe29c85        goharbor/registry-photon:v1.10.6      "/home/harbor/entryp…"   28 minutes ago      Up 28 minutes (healthy)   5000/tcp                    registry
140338f3d583        goharbor/harbor-registryctl:v1.10.6   "/home/harbor/start.…"   28 minutes ago      Up 28 minutes (healthy)                               registryctl
6d5a8a1c093d        goharbor/harbor-db:v1.10.6            "/docker-entrypoint.…"   28 minutes ago      Up 28 minutes (healthy)   5432/tcp                    harbor-db
8fc3ad6636bb        goharbor/harbor-log:v1.10.6           "/bin/sh -c /usr/loc…"   28 minutes ago      Up 28 minutes (healthy)   127.0.0.1:1514->10514/tcp   harbor-log
d5c5228e1b15        f1d1eb360670                          "/bin/sh -c 'apt-get…"   2 days ago          Exited (100) 2 days ago                               nice_archimedes

访问Harbor管理系统

地址: http://192.168.88.10
默认账号:admin
密码: harbor12345
在这里插入图片描述

docker-compose相关命令

# 后台启动,如果容器不存在根据镜像自动创建
docker-compose up -d
# 停止容器并删除容器
docker-compose down -v 
# 启动容器,容器不存在就无法启动,不会自动创建镜像
docker-compose start 
# 停止容器
docker-compose stop 

创建项目

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

docker镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://r4f5yw8c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

上传tomcat

#下载tomcat,默认是最新版
[root@localhost ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
756975cb9c7e: Pull complete 
d77915b4e630: Pull complete 
5f37a0a41b6b: Pull complete 
96b2c1e36db5: Pull complete 
27a2d52b526e: Pull complete 
a867dba77389: Pull complete 
0939c055fb79: Pull complete 
0b0694ce0ae2: Pull complete 
81a5f8099e05: Pull complete 
c3d7917d545e: Pull complete 
Digest: sha256:a319b10d8729817c7ce0bcc2343a6f97711c7870395019340d96b6aafd6ccbea
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
#启动tomcat
[root@localhost ~]# docker run -d -p 8080:8080 --name tomcat-test tomcat:latest 
e98c33d0c47e6e1cb68878c4ce6b368926a663ba9bcd6bcae7aa9cc978ca9ddf
#进入启动的tomcat容器
[root@localhost ~]# docker exec -it tomcat-test /bin/bash
#tomcat官方镜像 webapps 目录下默认没有文件,我们将webapps.dist 下的文件拷贝过去
root@e98c33d0c47e:/usr/local/tomcat# cp -r webapps.dist/* webapps/
root@e98c33d0c47e:/usr/local/tomcat# exit	#退出
#重启tomcat容器
[root@localhost ~]# docker restart tomcat-test 
tomcat-test

浏览器访问 http://192.168.88.10:8080
在这里插入图片描述
docker commit 镜像

#commit 将运行中的容器制作成镜像
[root@localhost ~]# docker commit tomcat-test 192.168.88.10/docker-test/tomcat:v1
sha256:d93ad439e2d59e7ca7c48b6647285ae6adb41c7b0a94e5e9ff00c32f60019ac8

登录harbor,会出现错误

[root@localhost ~]# docker login 192.168.88.10
Username: admin
Password: 
Error response from daemon: Get https://192.168.88.10/v2/: dial tcp 192.168.88.10:443: connect: connection refused

指定docker仓库

vim /etc/docker/daemon.json 
{
 "registry-mirrors": ["https://r4f5yw8c.mirror.aliyuncs.com"],
 "insecure-registries":["192.168.88.10"]
}
#重新加载,启动docker
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述
推送制作的镜像到harbor上

[root@localhost ~]# docker push 192.168.88.10/docker-test/tomcat:v1 
The push refers to repository [192.168.88.10/docker-test/tomcat]
ba193cb0a469: Pushed 
3be17d77a93a: Pushed 
a84354b89db3: Pushed 
438ec47051c4: Pushed 
94982bbe98d5: Pushed 
39341dafb261: Pushed 
4b9227ba273c: Pushed 
712264374d24: Pushed 
475b4eb79695: Pushed 
f3be340a54b9: Pushed 
114ca5b7280f: Pushed 
v1: digest: sha256:a37c72011075a04f65a2971522665e064b012c65bacd6a5670f86ef2900e5ddf size: 2632

仓库harbor仓库
在这里插入图片描述
在这里插入图片描述
docker企业镜像仓库Harbor到此部署完毕

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值