Harbor倉庫搭建及使用


一、docker配置

配置地址:https://www.cnblogs.com/lvlinguang/p/15183571.html

二、安裝docker-compose

1、下載docker-compose文件

官網地址:https://get.daocloud.io/

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、為docker-compose文件賦予可執行權限

chmod +x /usr/local/bin/docker-compose

3、查看docker-compose版本

docker-compose version

三、安裝harbor

1、下載地址

wget https://github.com/goharbor/harbor/releases/download/v2.2.2/harbor-offline-installer-v2.2.2.tgz

2、解壓文件

tar -zxvf harbor-offline-installer-v2.2.2.tgz

# 復制配置文件
cp harbor.yml.tmpl harbor.yml

3、修改harbor.yml配置

cd harbor
vim harbor.yml

# 修改如下配置
hostname: 192.168.3.12
http:
  port: 6007
harbor_admin_password: Harbor12345
  • hostname 這里設置本機的ip
  • harbor_admin_password 頁面的密碼
  • 注釋掉https部分

4、配置數據庫

  • 如果你需要將數據存儲在數據庫中,請按以下配置(非必選)
  • harbor默認會將數據存儲在本地,為了提高數據的安全性,可將數據存儲在數據庫中
  • 目前Harbor僅支持PostgraSQL數據庫,需要手動創建harbor、notary_signer、notary_servers三個數據庫,Harbor啟動時會自動在對應數據庫下生成表
  • postgresql數據庫安裝:https://www.cnblogs.com/lvlinguang/p/16583405.html
vim harbor.yml

# 配置數據庫
external_database:
  harbor:
    host: 127.0.0.1
    port: 5432
    db_name: harbor
    username: harbor_db_username
    password: harbor_db_password
    ssl_mode: disable
    max_idle_conns: 50
    max_open_conns: 100
  notary_signer:
    host: 127.0.0.1
    port: 5432
    db_name: notary_signer
    username: root
    password: 123456
    ssl_mode: disable
  notary_server:
    host: 127.0.0.1
    port: 5432
    db_name: notary_server
    username: root
    password: 123456
    ssl_mode: disable

5、修改daemon.json文件

  • 解決docker login 時,提示https問題
  • 添加insecure-registries
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "insecure-registries":["192.168.3.12:6007"]
}

6、運行/安裝

# 創建日志目錄,沒有該目錄無法創建,不知為何
mkdir /var/log/harbor

./install.sh

7、訪問頁面
http://192.168.3.12:6007

  • 帳號admin,密碼Harbor12345

8、修改端口

  • 如果需要修改端口請按以下操作
vim /home/apps/harbor/harbor.yml

# 修改端口
http:
  port: 1181

vim /etc/docker/daemon.json
"insecure-registries":["192.168.3.12:1181"]

# 停止服務
docker-compose down

# 重新編譯
./prepare

# 重新啟動
docker-compose up -d

# 重啟docker服務
systemctl daemon-reload
systemctl restart docker

9、域名配置

  • 如果當前站點需要通過域名配置訪問,可以用nginx做反向代理,具體步驟如下

  • nginx配置二級域名:https://www.cnblogs.com/lvlinguang/p/15195403.html

  • 通過以上配置nginx后,即可以通過域名訪問了,但是docker pull和docker push還是ip地址,通過修改harbor.yml文件來解決

vim /home/apps/harbor/harbor.yml

# 修改如下配置,hostname和port不變
external_url: http://harbor.abc.com

# 停止服務
docker-compose down

# 重新編譯
./prepare

# 重新啟動
docker-compose up -d

# 重啟docker服務
# systemctl restart docker

10、容器名稱修改

  • 如果你需要修改harbor啟動的容器名稱,請按以下操作

  • 默認啟動的harbor及組件名稱如下

  • 修改docker-compose.yml文件,找到container_name,修改相應的名稱,如下

  • 修改完成后,重新啟動即可

# 停止服務
docker-compose down

# 重新啟動
docker-compose up -d

11、設置自動啟動

vim /lib/systemd/system/harbor.service

[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/goharbor/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f  /home/apps/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /home/apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
  • systemctl enable harbor
  • systemctl start harbor

12、其它操作

# 停止
docker-compose stop

# 運行
docker-compose start

# 登錄
docker login -uadmin -pHarbor12345 192.168.3.12:6007

四、管理harbor

# linux登錄docker
docker login -uadmin -pHarbor12345 192.168.3.12:6007

# 拉取alpine鏡像
docker pull alpine

# 給鏡像打標簽,注意打標簽的格式為 鏡像倉庫名稱/項目名/鏡像名:版本號
docker tag docker.io/alpine:latest 192.168.3.12:6007/library/alpine:v1.1.2

# 將鏡像推送至harbor
docker push 192.168.3.12:6007/library/alpine:v1.1.2

五、springboot項目配置docker

1.創建Dockerfile文件

  • 在項目目錄下創建該文件
# jdk版本
FROM  java:8

# 臨時文件目錄
VOLUME /tmp

# 把target目錄下的jar包添加到容器里,並重命名為app.jar
ADD target/*.jar app.jar

# ENTRYPOINT 執行項目 app.jar。為了縮短 Tomcat 啟動時間,添加一個系統屬性指向 "/dev/urandom" 作為 Entropy Source.
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.修改pom.xml文件

方式一:使用maven里配置帳號密碼

<properties>
    <docker.repostory>192.168.3.12:6007</docker.repostory>
    <docker.registry.name>library</docker.registry.name>
    <docker.image.tag>v1.0.1</docker.image.tag>
    <docker.maven.plugin.version>1.4.10</docker.maven.plugin.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
        </plugin>
        <!-- Dockerfile maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>${docker.maven.plugin.version}</version>
            <configuration>
                <contextDirectory>${project.basedir}</contextDirectory>
                <!-- harbor 倉庫用戶名及密碼-->
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <repository>${docker.repostory}/${docker.registry.name}/${project.artifactId}</repository>
                <tag>${docker.image.tag}</tag>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

maven配置

<!--harbor-->
<server>
  <id>192.168.3.12:6007</id>
  <username>admin</username>
  <password>Harbor12345</password>
</server>

方式二:直接在pom文件里配置帳號密碼

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>${docker.maven.plugin.version}</version>
    <configuration>
        <repository>${docker.repostory}/${docker.registry.name}/${project.artifactId}</repository>
        <tag>${docker.image.tag}</tag>
        <username>admin</username>
        <password>Harbor12345</password>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

六、linux服務器上打包並推送至harbor

1、將springboot項目源碼復制到服務器

2、maven打包

  • 進入項目目錄
mvn -U clean install -Dmaven.test.skip=true

3、打包成docker鏡

mvn dockerfile:build

4、將docker鏡像推送到Harbor倉庫

mvn dockerfile:push

5、其它操作

# 查看鏡像
docker images

# 啟動鏡像
docker run -d --name rapid-web2 -p 8081:8089 192.168.3.12:6007/library/rapid-screen:v1.0.1

6、harbor上查看

七、錯誤方案

1、停止錯誤
Network harbor_harbor Error

docker network inspect harbor_harbor
docker network disconnect -f harbor_harbor harbor-jobservice
docker network disconnect -f harbor_harbor harbor-portal
docker network disconnect -f harbor_harbor nginx
docker network disconnect -f harbor_harbor registryctl

八、參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM