鉴于Harbor官方的安装无比混乱, 因此记录如何将有用的东西提取出来, 最终形成data
目录, config
目录, docker-compose.yml
文件.
- 修复因端口问题导致的
docker login
失败 - 删除log容器和网络
- 增加容器名称前缀
按照官方教程进行前期操作
下载执行官方配置脚本, 配置harbor.yml
, 注意配置和记录端口, 密码和data
目录
执行install.sh
生成data
目录, common
目录和docker-compose.yml
修改目录位置
data目录最好一开始就填写正确位置, 这样后续就不需要修改, 如果需要更改则需要修改docker-compose.yml
文件
config目录就在common目录中, 修改方法和data目录修改方法一致, 直接修改docker-compose.yml
文件即可
更改log记录方式
官方将容器运行产生的log都存放在了文件里, 我不喜欢它占用主机1514端口, 且不需要记录log, 因此直接删除
log记录由下面这个容器提供, 直接删除
log:
image: goharbor/harbor-log:v2.11.1
container_name: harbor-log
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- SETGID
- SETUID
volumes:
- /var/log/harbor/:/var/log/docker/:z
- type: bind
source: ./common/config/log/logrotate.conf
target: /etc/logrotate.d/logrotate.conf
- type: bind
source: ./common/config/log/rsyslog_docker.conf
target: /etc/rsyslog.d/rsyslog_docker.conf
ports:
- 127.0.0.1:1514:10514
networks:
- harbor
删除容器后, 还需要修改引用到此容器的容器
删除依赖
如果depends_on中只有log, 那就整个删除, 如果还有其他的, 则只删除log这行
depends_on:
- log
删除logging
将下面这个样式的直接删除
logging:
driver: "syslog"
options:
syslog-address: "tcp://localhost:1514"
tag: "registryctl"
删除网络
由于删除log后, 网络不再需要, 因此可以删除, 也就是下面这个
networks:
- harbor
最后删除networks配置
networks:
harbor:
external: false
修复docker login端口
进入config目录执行如下命令, 查询引用到端口的地方(请将11191端口换成自己定义的端口)
root@xxx:xxxx/common/config# grep -rn "11191"
core/env:8:EXT_ENDPOINT=https://dockerhub.akvicor.com:11191
nginx/nginx.conf:147: return 308 https://$host:11191$request_uri;
修改后应该是这样
core/env:8:EXT_ENDPOINT=https://dockerhub.akvicor.com
nginx/nginx.conf:147: return 308 https://$host$request_uri;
删除默认的container_name
删除所有容器的container_name, 方便安装时统一添加前缀
安装
执行如下命令安装并添加前缀, 这样每个容器的名字都会有个dockerhub前缀, 这样就不会与其他容器冲突了
docker compose -p dockerhub up -d