Docker私服-Habor
三 Harbor私服
1. 场景
在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的。需要一个仓库统一管理镜像。
2. 引言
Harbor英文港口的意思,Docker镜像是一个鲸鱼拖着集装箱,寓意:用来管理停靠 Docker镜像
Habor是由VMWare公司开源的容器镜像仓库Registry(Docker-Hub)。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware开源。
3. 功能
(1) 基于角色访问控制
在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。
例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。
(2) 图形化界面
用户可以通过浏览器查看、检索当前Docker镜像仓库,并可进行管理项目和命名空间的操作;
(3) 镜像删除和空间回收
Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。
(4) 安全审计
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理;
(5) RESI API
可以通过java代码实现内部功能管理。完整的API,方便与外部集成。
(6) 部署简单
harbor安装部署简单。
4. 安装要求
(1) 硬件要求
资源 | 最小要求 | 推荐配置 |
---|---|---|
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
(2) 软件要求
软件 | 版本号 |
---|---|
docker | 17.06.0 及以上 |
docker-compose | 1.18.0 及以上 |
openssl |
(3) 网络端口要求
端口 | 协议 | 描述 |
---|---|---|
443 | https | https端口,可以从配置文件中修改 |
4443 | https | 当notary打开时使用,否则不需要使用,可以通过配置文件修改 |
80 | http | http端口,可以从配置文件中修改 |
5. 安装
(1) 安装docker
(2) 安装docker-compose
1. 安装扩展yum源
yum install -y epel-release
yum makecache fast
2. 安装docker-compose
yum install -y docker-compose
3. 验证docker-compose
[root@localhost ~]# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
(3) 离线安装解压harbor
tar zxvf harbor-offline-installer-v2.5.3.tgz -C /opt/installs/
(4) 修改配置 harbor.yml
前提:将harbor.yml.tmpl文件改为harbor.yml
(5) 初始化配置
1. 修改harbor的域名或者ip
hostname: 192.168.127.100
2. 网络连接harbor使用http协议端口
http:
port: 99
3. 如果不适用https,注释
# https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
4. 登录harbor的超级管理员密码
harbor_admin_password: *******
(6) 安装
./install.sh
(7) 检验
查看所有harbor程序
docker-compose ps
(8) 故障处理
如果有容器的状态不是up运行状态,查看harbor日志
/var/log/harbor
(9) 访问
1. 地址
http://harbor的ip:99
2. 超级管理员登录
用户名:admin
密码:配置的密码
6. docker绑定
(1) 修改/etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["192.168.199.51:88"] /*harbor的ip:端口*/
}
(2) 重启docker引擎
systemctl daemon-reload
systemctl restart docker
(3) 使用docker-compose重启harbor所有容器
注意:必须在harbor解压文件夹下面,docker-compose.yml文件位置。执行命令。
1. 关闭
docker-compose down -v
2. 启动
docker-compose up -d
7. 项目和角色
看视频演示
8. push推送镜像
假设有app-server和mysql两个镜像,属于cms项目,推送镜像成品。
(1) 给镜像打上tag(harbor)
命令:docker tag 镜像名:tag harbor的ip:端口/项目名/镜像名:tag
1. 给app-server:1.0打标签
2. 给mysql:5.7打标签
(2) 登录私服
命令:docker login harbor的ip:端口
[root@localhost harbor]# docker login 192.168.127.100:99
Username: admin
Password:
(3) 推送镜像
命令:docker push 带harbor前缀的镜像:tag
1. 推送app-server
[root@localhost harbor]# docker push 192.168.127.100:99/cms/app-server:1.0
2. 推送mysql
[root@localhost harbor]# docker push 192.168.127.100:99/cms/mysql:5.7-1
9. pull拉取镜像
docker pull xxxxx