通过 docker 搭建 harbor

172 阅读2分钟

以 2.7.4 版本为例(默认已安装 docker):

  • 下载安装 tar 包

    curl -L https://github.com/goharbor/harbor/releases/download/v2.7.4/harbor-offline-installer-v2.7.4.tgz -o harbor.tar.gz
    

    下载完成后会生成一个 harbor.tar.gz 文件。

  • 解压 tar 文件

    tar -xvf harbor.tar.gz
    

    解压完成后会生成一个 harbor 文件夹。

  • 修改 yml 文件

    上一步生成的 harbor 文件夹内包含了一个 harbor.yml.tmpl 文件,拷贝该文件为 harbor.yml:

    cp harbor.yml.tmpl harbor.yml
    

    修改 yml,hostname 修改为本机 IP,port 修改为自己想要的端口,去掉 https 的内容:

    # The IP address or hostname to access admin UI and registry service.
    # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
    # 需要注意的是 key、value 之间是有空格的
    hostname: 192.168.30.11
    
    # http related config
    http:
      # port for http, default is 80. If https enabled, this port will redirect to https port
      port: 18082
    # https related config
    # https:
    #   # https port for harbor, default is 443
    #   port: 443
    #   # The path of cert and key files for nginx
    #   certificate: /your/certificate/path
    #   private_key: /your/private/key/path
    
  • 安装 harbor

    在 harbor 目录执行:

    bash install.sh
    

    安装成功后,会出现:

    ✔ Network harbor_harbor        Created                                                                                                                                       0.1s
    ✔ Container harbor-log         Started                                                                                                                                       1.7s
    ✔ Container redis              Started                                                                                                                                       1.9s
    ✔ Container registryctl        Started                                                                                                                                       2.3s
    ✔ Container registry           Started                                                                                                                                       2.3s
    ✔ Container harbor-db          Started                                                                                                                                       1.9s
    ✔ Container harbor-portal      Started                                                                                                                                       2.3s
    ✔ Container harbor-core        Started                                                                                                                                       2.6s
    ✔ Container harbor-jobservice  Started                                                                                                                                       3.6s
    ✔ Container nginx              Started                                                                                                                                       3.7s
    ✔ ----Harbor has been installed and started successfully.----
    

    这个时候安装就成功了。可以通过以下命令管理 docker:

    # 查看
    docker-compose ps
    
    # 启动
    docker-compose up -d
    
    # 停止
    docker-compose down
    
  • 访问 harbor

    安装成功后就可以访问 harbor 了,访问地址为 yml 配置地址,我们这里是http://192.168.30.11:18082/,默认的账号密码为 admin/Harbor12345(yml 文件配置)。

  • 配置镜像源

    我们通过 http 访问需要配置 insecure-registries。 mac 上可以通过界面 setting=>Docker Engine 设置镜像源:

    {
      "insecure-registries": ["192.168.30.11:18082"]
    }
    

    修改完后点击 Apply。

    在 linux 上一般为/etc/docker/daemon.json文件,修改完后重启 docker:

    systemctl daemon-reload
    systemctl restart docker
    
  • 登录

    //登录某个用户
    docker login 192.168.30.11:18082 -u admin
    
  • tag

    将本地已经生成好的某个 image(如 xhm-nginx:0.0.1) 打标签:

    //docker tag local-image:tag your-registry-url/your-repository:tag
    docker tag xhm-nginx:0.0.1 192.168.30.11:18082/library/xhm-nginx:0.0.1
    
  • 推送镜像

    //docker push your-registry-url/your-repository:tag
    docker push 192.168.30.11:18082/library/xhm-nginx:0.0.1
    

自此,就可以推送镜像到私有部署的地址了。