安装Harbor镜像仓库

安装docker

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

下载harbor安装包

1
2
3
4
5
6
7
8
9
10
11
12
# 下载Docker Harbor安装包
wget https://github.com/goharbor/harbor/releases/download/v2.12.0/harbor-offline-installer-v2.12.0.tgz

# 解压安装包
[root@chenby ~]# tar xvf harbor-offline-installer-v2.12.0.tgz -C /usr/local/
harbor/harbor.v2.12.0.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl
[root@chenby ~]# cd /usr/local/harbor/

创建证书

1
2
# 我用的是免费证书  Let's Encrypt 泛域名证书申请
https://www.oiox.cn/index.php/archives/139/

配置harbor服务

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
50
51
52
53
54
55
56
57
58
59
60
61
# 配置harbor文件
[root@chenby harbor]# cp harbor.yml.tmpl harbor.yml
[root@chenby harbor]# vim harbor.yml
[root@chenby harbor]# cat harbor.yml | grep -v '^#' | grep -v '^$' | grep -v ' #'
hostname: z.oiox.cn
http:
port: 18081
https:
port: 18082
certificate: /ssl/cert.pem
private_key: /ssl/cert.key
harbor_admin_password: Cby123..
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m
conn_max_idle_time: 0
data_volume: /data
trivy:
ignore_unfixed: false
skip_update: false
skip_java_db_update: false
offline_scan: false
security_check: vuln
insecure: false
timeout: 5m0s
jobservice:
max_job_workers: 10
job_loggers:
- STD_OUTPUT
- FILE
logger_sweeper_duration: 1 #days
notification:
webhook_job_max_retry: 3
webhook_job_http_client_timeout: 3 #seconds
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.12.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
upload_purging:
enabled: true
age: 168h
interval: 24h
dryrun: false
cache:
enabled: false
expire_hours: 24
[root@chenby harbor]#

安装harbor

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# 进行安装
[root@chenby harbor]# ./install.sh

[Step 0]: checking if docker is installed ...

Note: docker version: 27.3.1

[Step 1]: checking docker-compose is installed ...

Note: Docker Compose version v2.29.7

[Step 2]: loading Harbor images ...
910db7c25623: Loading layer [==================================================>] 40.51MB/40.51MB
c8cd0a1f5b0b: Loading layer [==================================================>] 107.6MB/107.6MB
15d8ff051c07: Loading layer [==================================================>] 46.48MB/46.48MB
d197fd97c185: Loading layer [==================================================>] 13.77MB/13.77MB
d88ec2163d81: Loading layer [==================================================>] 66.05kB/66.05kB
e63d6d00357d: Loading layer [==================================================>] 2.56kB/2.56kB
b802bc40d720: Loading layer [==================================================>] 1.536kB/1.536kB
8225980335b5: Loading layer [==================================================>] 12.29kB/12.29kB
3175598f5b32: Loading layer [==================================================>] 2.746MB/2.746MB
ef05ddf12dfe: Loading layer [==================================================>] 525.3kB/525.3kB
Loaded image: goharbor/prepare:v2.12.0
32cd15a4ebdd: Loading layer [==================================================>] 16.27MB/16.27MB
0dd22cb0da1b: Loading layer [==================================================>] 190.2MB/190.2MB
ac30f78bb9c1: Loading layer [==================================================>] 26.08MB/26.08MB
527459edc5ee: Loading layer [==================================================>] 18.6MB/18.6MB
0fe3e34fe571: Loading layer [==================================================>] 5.12kB/5.12kB
eb0883932a36: Loading layer [==================================================>] 6.144kB/6.144kB
49b31970580b: Loading layer [==================================================>] 3.072kB/3.072kB
478aa400459f: Loading layer [==================================================>] 2.048kB/2.048kB
c39207896960: Loading layer [==================================================>] 2.56kB/2.56kB
e3a89007fad0: Loading layer [==================================================>] 7.68kB/7.68kB
Loaded image: goharbor/harbor-db:v2.12.0
eb105901976e: Loading layer [==================================================>] 11.57MB/11.57MB
4c386227a4e4: Loading layer [==================================================>] 3.584kB/3.584kB
4f442ab7cc4c: Loading layer [==================================================>] 2.56kB/2.56kB
2fa6704b1ae6: Loading layer [==================================================>] 59.63MB/59.63MB
65c014dfa82d: Loading layer [==================================================>] 60.42MB/60.42MB
Loaded image: goharbor/harbor-jobservice:v2.12.0
4cab912836a2: Loading layer [==================================================>] 8.614MB/8.614MB
247df5f5c893: Loading layer [==================================================>] 4.096kB/4.096kB
9ee7df405168: Loading layer [==================================================>] 18.13MB/18.13MB
d628a65e4634: Loading layer [==================================================>] 3.072kB/3.072kB
1759c807e026: Loading layer [==================================================>] 36.96MB/36.96MB
bee402e81ccd: Loading layer [==================================================>] 55.88MB/55.88MB
Loaded image: goharbor/harbor-registryctl:v2.12.0
afc604caf53d: Loading layer [==================================================>] 11.57MB/11.57MB
f9eb13f95461: Loading layer [==================================================>] 37.01MB/37.01MB
e98d25e4c661: Loading layer [==================================================>] 4.608kB/4.608kB
8dd3c4f177e1: Loading layer [==================================================>] 37.8MB/37.8MB
Loaded image: goharbor/harbor-exporter:v2.12.0
31e9c30e4a21: Loading layer [==================================================>] 16.27MB/16.27MB
bfcf2dfddce8: Loading layer [==================================================>] 125.1MB/125.1MB
1660b90f9dc7: Loading layer [==================================================>] 3.072kB/3.072kB
93c9be43608f: Loading layer [==================================================>] 59.9kB/59.9kB
d69d92256927: Loading layer [==================================================>] 61.95kB/61.95kB
Loaded image: goharbor/redis-photon:v2.12.0
769c4aa8c0a4: Loading layer [==================================================>] 8.614MB/8.614MB
9cd556727275: Loading layer [==================================================>] 4.096kB/4.096kB
0edc0bc0fa32: Loading layer [==================================================>] 3.072kB/3.072kB
30823cd3e953: Loading layer [==================================================>] 18.13MB/18.13MB
31ffd46d4827: Loading layer [==================================================>] 18.92MB/18.92MB
Loaded image: goharbor/registry-photon:v2.12.0
8f8c2600e204: Loading layer [==================================================>] 130.1MB/130.1MB
676f1d057a8c: Loading layer [==================================================>] 6.731MB/6.731MB
71425f9960bc: Loading layer [==================================================>] 252.9kB/252.9kB
8ce274b4eb81: Loading layer [==================================================>] 1.497MB/1.497MB
Loaded image: goharbor/harbor-portal:v2.12.0
4ed6c9567d72: Loading layer [==================================================>] 11.57MB/11.57MB
68c5cae40c58: Loading layer [==================================================>] 3.584kB/3.584kB
a29956692eb6: Loading layer [==================================================>] 2.56kB/2.56kB
d4eac84f665a: Loading layer [==================================================>] 70.77MB/70.77MB
c2d39ec31cb3: Loading layer [==================================================>] 5.632kB/5.632kB
81df0033286e: Loading layer [==================================================>] 126.5kB/126.5kB
847040daf450: Loading layer [==================================================>] 201.7kB/201.7kB
cba56604cbfc: Loading layer [==================================================>] 71.89MB/71.89MB
6d8fda582e88: Loading layer [==================================================>] 2.56kB/2.56kB
Loaded image: goharbor/harbor-core:v2.12.0
8dd98fe70bfa: Loading layer [==================================================>] 139.8MB/139.8MB
c0691b0983da: Loading layer [==================================================>] 3.584kB/3.584kB
a205646db971: Loading layer [==================================================>] 3.072kB/3.072kB
36bea9385de7: Loading layer [==================================================>] 2.56kB/2.56kB
624bbccc716a: Loading layer [==================================================>] 3.072kB/3.072kB
cee989d2b0b0: Loading layer [==================================================>] 3.584kB/3.584kB
73035228c2e1: Loading layer [==================================================>] 20.48kB/20.48kB
Loaded image: goharbor/harbor-log:v2.12.0
d397faf073f1: Loading layer [==================================================>] 130.1MB/130.1MB
Loaded image: goharbor/nginx-photon:v2.12.0
3e1f1096c4bf: Loading layer [==================================================>] 9.106MB/9.106MB
9cc192b1539e: Loading layer [==================================================>] 4.096kB/4.096kB
a4448f8ca935: Loading layer [==================================================>] 3.072kB/3.072kB
38c665e4daa5: Loading layer [==================================================>] 133.8MB/133.8MB
867c3a3ec63e: Loading layer [==================================================>] 15.55MB/15.55MB
e04b98ae7085: Loading layer [==================================================>] 150.1MB/150.1MB
Loaded image: goharbor/trivy-adapter-photon:v2.12.0


[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /usr/local/harbor
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir


Note: stopping existing Harbor instance ...


[Step 5]: starting Harbor ...
[+] Running 10/10
✔ Network harbor_harbor Created 0.2s
✔ Container harbor-log Started 0.4s
✔ Container harbor-db Started 0.6s
✔ Container redis Started 0.7s
✔ Container registryctl Started 0.7s
✔ Container harbor-portal Started 0.7s
✔ Container registry Started 0.6s
✔ Container harbor-core Started 0.8s
✔ Container nginx Started 1.1s
✔ Container harbor-jobservice Started 1.0s
✔ ----Harbor has been installed and started successfully.----
[root@chenby harbor]#

配置解析和docker

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
# FQDN解析
cat >> /etc/hosts <<EOF
192.168.1.120 z.oiox.cn
EOF


# 例如docker的配置
# 如果没有正式的域名以及ssl证书就需要配置 insecure-registries 参数
[root@chenby ~]# cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["z.oiox.cn:18082"],
"registry-mirrors": [
"https://xxxxx.mirror.aliyuncs.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF

# 重新启动docker
[root@chenby ~]# systemctl restart docker && systemctl status docker -l

测试使用

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
# 登陆 
[root@chenby ~]# docker login z.oiox.cn:18082
Username: admin
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/#credential-stores

Login Succeeded
[root@chenby ~]#

# 构建镜像
[root@chenby ~]# cat > Dockerfile <<EOF
FROM nginx
RUN echo '这是一个本地构建的nginx镜像,第一版' > /usr/share/nginx/html/index.html
EOF

docker build -t z.oiox.cn:18082/library/cby:v1 .


[root@chenby ~]# cat > Dockerfile <<EOF
FROM nginx
RUN echo '这是一个本地构建的nginx镜像,第二版' > /usr/share/nginx/html/index.html
EOF

docker build -t z.oiox.cn:18082/library/cby:v2 .


docker push z.oiox.cn:18082/library/cby:v1
docker push z.oiox.cn:18082/library/cby:v2

docker rmi z.oiox.cn:18082/library/cby:v1
docker rmi z.oiox.cn:18082/library/cby:v2

docker pull z.oiox.cn:18082/library/cby:v1
docker pull z.oiox.cn:18082/library/cby:v2

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、51CTO、知乎、开源中国、思否、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维》

文章主要发布于微信公众号