CI/CD准备——私库registry/ harbor搭建使用(docker-compose)
私有docker仓库:常用有registry、harbor两种,registry简单,但默认没有web管理界面,访问控制等必须功能,harbor包较大,依赖多个容器,占用较多系统资源。
1.registry使用
1.安装registry仓库
docker run -d -v /opt/registry:/var/lib/registry -p 5001:5000 --name myregistry registry:2
2.将registry:2另打个tag
docker tag docker.io/registry:2 localhost:5001/test:1.0
3.将localhost:5001/registry:2.1镜像push上去
docker push localhost:5001/test.1.0
默认支持https,需要修改vim /etc/docker/daemon.json,配置{ "insecure-registries":["192.168.203.132:5001"] } 再重启docker 及registry容器
4.谷歌访问查看是否推上去了
http://192.168.203.132:5001/v2/_catalog
2.harbor使用
2.1 github下载安装包,1.8.0+版本需要较高版本的docker版本,因docker版本较低,这里使用了稍低的版本
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.3.tgz
2.2 修改harbor.cfg ,hostname = 192.168.203.132, sh install.sh 进行启动,该脚本会检查docker,docker-compose版本等,然后执行docker-compose启动多个容器,包括nginx容器。
1.github安装方式:docker-compose安装 https://github.com/docker/compose/releases
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2.本地安装:由于网络原因可能下载很慢,下载https://pan.baidu.com/s/1dZvRlh92ftjFd0M94JBS-w
mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
插曲:docker-compose.yml基本结构,已influxdb+cadvisor+grafana为例
version: '3.2'
volumes:
grafana_data: {}
services:
influxdb:
image: tutum/influxdb:0.9
#image: tutum/influxdb
#image: influxdb #高版本没有8083管理端口
restart: always
container_name: influxdb
environment:
- PRE_CREATE_DB=cadvisor
ports:
- "8083:8083"
- "8086:8086"
volumes:
- /home/data/influxdb:/data
networks:
- monitor
cadvisor:
image: google/cadvisor:v0.24.1
#image: google/cadvisor #高版本有bug
container_name: cadvisor
# links:
# - influxdb
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
networks:
- monitor
grafana:
#image: grafana/grafana:2.6.0
image: grafana/grafana
container_name: grafana
restart: always
user: "104" #?????
# links:
# - influxdb
depends_on:
- influxdb
- cadvisor
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
networks:
- monitor
environment:
- HTTP_USER=admin #grafana默认账户密码
- HTTP_PASS=admin
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=cadvisor #influxdb的数据库cadvisor
- INFLUXDB_USER=root #influxdb账户密码
- INFLUXDB_PASS=root
#定义几个服务共用的网络,避免-links的配置
networks:
monitor:
driver: bridge
ose的基本使用
2.3 web管理页面
访问http://192.168.203.132,发现登录按钮是disabled的,需要host文件配置域名解析,如 harbor.jwolf.com然后再次域名访问即可。默认admin/Harbor12345,创建一个新项目test,先“不公开”

2.4 测试push /pull镜像及仓库的访问控制
1.镜像打tag
docker tag goharbor/harbor-db:v1.6.3 192.168.203.132/test/harbor-db:1.0
2.登录私有镜像仓库报错,因为默认走https443端口
docker login 192.168.203.132报错“Error response from daemon: Get https://192.168.203.132/v1/users/: dial tcp 192.168.203.132:443: connect: connection refused”
解决: vim /etc/docker/daemon.json 配置并systemctl restart docker
{
"insecure-registries": ["192.168.203.132"]
}
3.再次登录并push,web页面即可看到该镜像
docker push 192.168.203.132/test/harbor-db:1.0
4.仓库访问控制
登出私有仓库docker logout 192.168.203.132,再次push发现request deny,也不能pull镜像。再将test项目改为“公开”再次测试:push仍需要登录,但可以pull。
2.5其它功能
日志:仓库镜像的一些push pull delete等访问日志
用户管理:添加其他用户(普通用户看不到“系统管理”模块)
仓库管理+复制管理:harbor高可用配置需要用到的模块,用于配置“主从复制”,然后nginx配置一下负载均衡即可高可用
配置管理:系统安全等其它系统配置
参考文章:https://blog.csdn.net/aixiaoyang168/article/details/73549898