Harbor私有镜像仓库部署

1、harbor介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

由下面几个组件组成:

  • proxy:nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量

  • registry:镜像仓库,负责存储镜像文件

  • 核心服务:提供web ui,数据库,token认证,webhook等功能

  • 日志服务

  • database:用来存储核心服务的一些数据

因为是vmware出品的,所以支持下面几种部署方式

  • 在线安装

  • 离线安装

  • ova安装,这个直接在vcenter上导入就可以了

官方最小配置

  • 2个cpu

  • 4g内存

  • 40g硬盘,因为是存储镜像的所以推荐硬盘大点

2、部署服务

2.1 安装docker

2.1.1 安装一些必要的系统工具

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.1.2 添加docker镜像源

1
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.1.3 安装需要的版本

1
2
sudo yum list docker-ce  --showduplicates |sort -r
sudo yum -y install docker-ce-18.03.1.ce-1.el7.centos

2.1.4 把当前用户加入docker用户组

1
2
sudo groupadd docker
sudo usermod -aG docker $USER

2.1.5 修改配置文件

1
2
3
4
5
6
7
8
9
sudo vim /etc/docker/daemon.json
{
"storage-driver": "overlay2",
"storage-opts": [ "overlay2.override_kernel_check=true" ],
"graph":"/work/admin/docker",
"insecure-registries":["harbor.feiersmart.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"100m","max-file":"3"}
}

insecure-registries:增加私有镜像仓库地址

storage-driver:修改存储驱动,默认安装docker时会自动选择适合的驱动类型

log-driver:使用json日志格式

logs-opts:调整容器单个日志大小,最多保留历史日志数量

graph:修改docker工作目录

2.1.6 启动docker服务

1
2
sudo systemctl enable docker
sudo systemctl start docker

2.1.7 查看docker确保没有info类信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
docker info

Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.03.1-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-693.2.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.702GiB
Name: haifly-bj-harbor
ID: OGJI:FMA3:RAQ4:7MTF:YE2Q:BYP5:PFCO:ETCD:I5WX:OAYB:Y2HK:TJRF
Docker Root Dir: /work/admin/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
harbor.feiersmart.com
127.0.0.0/8
Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

解决WARNING:

1
2
3
4
5
sudo vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

sudo sysctl -p

2.2 安装docker-compose:

1
2
3
4
5
6
sudo yum install epel-release -y
sudo yum install python-pip -y

sudo pip install --upgrade pip
sudo pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose
docker-compose version

2.3 部署harbor私有镜像仓库

2.3.1 下载Harbor镜像仓库

1
git clone https://github.com/goharbor/harbor.git

2.3.2 配置Harbor

1
2
3
4
5
6
7
vim harbor/make/harbor.yml

hostname: harbor.feiersmart.com #harbor访问域名

harbor_admin_password: ************ #web控制台admin密码

data_volume: /work/admin/harbor_data #harbor数据存储目录

主要修改这两个就可以

2.3.3 用docker-compose部署

1
2
cd harbor
sudo ./install.sh

#我部署的是当时的最新版本1.8,但docker-compose.yml文件中的镜像是1.9.0的,而这时还没有1.9.0的镜像,所以要手动修改.yml中的所有镜像为1.8.0版本

1
docker-compose up

docker-compose down #关闭

docker-compose restart #重启

2.3.4 配置开机自动启动

1
/usr/bin/docker-compose -f /work/admin/harbor/make/docker-compose.yml up -d
-------------本文结束感谢您的阅读-------------