2024-09-21  2024-09-21    825 字  2 分钟

鉴于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