第四课:企业级镜像仓库Harbor

1.Harbor 概述

Harbor是有VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

官方网址

https://vmware.github.io/harbor/cn

组件 功能
harbor-adminiserver 配置管理中心
harbor-db Mysql数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储

2. Harbor 部署

  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小。
  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大。
  • OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor。

  • 离线安装

    https://github.com/goharbor/harbor/releases/download/v1.9.4-rc1/harbor-offline-installer-v1.9.4-rc1.tgz

Harbor安装依赖docker-compose
先安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安装Harbor

tar zxvf harbor-offline-installer-v1.9.4-rc1.tgz
cd harbor
vi harbor.yml
hostname = 192.168.1.88
harbor_admin_password = 123456

./install.sh

3. 基本使用

通过页面登录harbor

http://192.168.1.88
amdin
Harbor12345

可以在页面创建用户,创建项目仓库,赋予用户权限等操作

创建lnmp项目将第三课使用的三个镜像推送到镜像仓库中
推送命令,打标签,上传,下载

docker tag nginx:v1 192.168.1.88/lnmp/nginx:v1
docker push 192.168.1.88/lnmp/nginx:v1
docker pull 192.168.1.88/lnmp/nginx:v1

[root@192 harbor]# docker push 192.168.1.88/lnmp/nginx:v1
The push refers to repository [192.168.1.88/lnmp/nginx]
Get https://192.168.1.88/v2/: dial tcp 192.168.1.88:443: connect: connection refused

  • 配置http可信任

推送失败的原因是默认使用443,我们目前使用的是80,所以要在docker配置文件中添加可信任地址,如果默认使用的非80端口,需要在地址后跟端口号。

vi /etc/docker/daemon.json
[root@192 harbor]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
    "insecure-registries": ["192.168.1.88"]
}
  • 重启docker,docker-compose
systemctl restart docker
docker-compose up -d
  • 查看所有容器均已经正常启动
[root@192 harbor]# docker-compose ps   
      Name                     Command                       State                     Ports          
------------------------------------------------------------------------------------------------------
harbor-core         /harbor/harbor_core              Up (health: starting)                            
harbor-db           /docker-entrypoint.sh            Up (health: starting)   5432/tcp                 
harbor-jobservice   /harbor/harbor_jobservice  ...   Up (health: starting)                            
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 (health: starting)   0.0.0.0:80->8080/tcp     
redis               redis-server /etc/redis.conf     Up (health: starting)   6379/tcp                 
registry            /entrypoint.sh /etc/regist ...   Up (health: starting)   5000/tcp                 
registryctl         /harbor/start.sh                 Up (health: starting)      
  • 使用我们创建的用户登录镜像仓库,并上传镜像文件
[root@192 harbor]# docker login 192.168.1.88
Username: yujia
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
[root@192 harbor]# docker push 192.168.1.88/lnmp/nginx:v1
The push refers to repository [192.168.1.88/lnmp/nginx]
b105acf7be9d: Pushed 
9e268d190836: Pushed 
77b174a6a187: Pushed 
v1: digest: sha256:621524f7be59a8d09e0cc1091ec10f74b93c39e763ea5be483e7deb1e7859829 size: 952

至此我们可以将镜像发布出来供他人下载使用。

猜你喜欢

转载自www.cnblogs.com/Doc-Yu/p/12113076.html