欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用 Docker 部署 GitLab 并持久化數(shù)據(jù)的實例步驟

 更新時間:2025年05月07日 09:40:49   作者:碼上有潛  
本文將詳細(xì)介紹如何使用 Docker 部署 GitLab,并將數(shù)據(jù)(如倉庫、配置、日志等)持久化到主機(jī)磁盤,我們還將解決常見的端口沖突問題,并介紹如何從另一臺 GitLab 恢復(fù)數(shù)據(jù)到新的 GitLab 實例,感興趣的朋友一起看看吧

使用 Docker 部署 GitLab 并持久化數(shù)據(jù)

本文將詳細(xì)介紹如何使用 Docker 部署 GitLab,并將數(shù)據(jù)(如倉庫、配置、日志等)持久化到主機(jī)磁盤。我們還將解決常見的端口沖突問題,并介紹如何從另一臺 GitLab 恢復(fù)數(shù)據(jù)到新的 GitLab 實例。

環(huán)境準(zhǔn)備

  • 一臺 Linux 服務(wù)器(本文以 CentOS 為例)。
  • 已安裝 Docker 和 Docker Compose。
  • 確保服務(wù)器有足夠資源(建議至少 4GB 內(nèi)存和 2 核 CPU)。

步驟 1:創(chuàng)建目錄

在主機(jī)上創(chuàng)建用于存儲 GitLab 數(shù)據(jù)的目錄:

mkdir -p /home/middleware/gitlab/{config,data,logs}
  • config:用于存儲 GitLab 配置文件。
  • data:用于存儲 GitLab 倉庫數(shù)據(jù)。
  • logs:用于存儲 GitLab 日志。

步驟 2:運(yùn)行 GitLab 容器

使用以下命令啟動 GitLab 容器,并將數(shù)據(jù)目錄映射到主機(jī):

docker run -d \
  --hostname 192.168.1.1 \  # 替換為你的域名或 IP
  --publish 443:443 --publish 80:80 --publish 2222:22 \  # 映射 HTTP、HTTPS 和 SSH 端口
  --name gitlab \
  --restart always \
  --volume /home/middleware/gitlab/config:/etc/gitlab \  # 映射配置文件
  --volume /home/middleware/gitlab/logs:/var/log/gitlab \  # 映射日志
  --volume /home/middleware/gitlab/data:/var/opt/gitlab \  # 映射數(shù)據(jù)
  gitlab/gitlab-ce:latest

參數(shù)說明:

  • --hostname:設(shè)置 GitLab 的域名或 IP 地址。
  • --publish:映射端口:
    • 80:HTTP 端口。
    • 443:HTTPS 端口。
    • 2222:SSH 端口(避免與主機(jī) SSH 端口沖突)。
  • --volume:將主機(jī)目錄映射到容器內(nèi)目錄,確保數(shù)據(jù)持久化。
  • --restart always:設(shè)置容器隨 Docker 自動啟動。

步驟 3:修改 GitLab 配置

GitLab 容器啟動后,會自動生成配置文件。我們需要修改配置以使用新的 SSH 端口。

編輯配置文件:

vi /home/middleware/gitlab/config/gitlab.rb

找到以下行并修改(如果不存在,可以手動添加):

gitlab_rails['gitlab_shell_ssh_port'] = 2222

保存并退出。

重新配置 GitLab 以使更改生效:

docker exec -it gitlab gitlab-ctl reconfigure

重啟 GitLab 容器:

docker restart gitlab

步驟 4:訪問 GitLab

  • 等待 GitLab 初始化完成(可能需要幾分鐘)。
  • 打開瀏覽器,訪問 http://192.168.1.1
  • 默認(rèn)用戶名:root,初始密碼可以通過以下命令獲取:
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

步驟 5:驗證 GitLab SSH 訪問

如果 GitLab 的 SSH 端口已修改為 2222,克隆 Git 倉庫時需要指定端口。例如:

git clone ssh://git@192.168.1.1:2222/username/repo.git

步驟 6:從另一臺 GitLab 恢復(fù)數(shù)據(jù)

如果你有另一臺 GitLab 的備份數(shù)據(jù),可以將其恢復(fù)到新的 GitLab 實例中。

1. 備份舊 GitLab 數(shù)據(jù)

在舊 GitLab 服務(wù)器上運(yùn)行以下命令創(chuàng)建備份:(如果沒有舊數(shù)據(jù)恢復(fù)跳過當(dāng)前步驟)

docker exec -it <舊GitLab容器名> gitlab-backup create

備份成功

備份文件會存儲在舊 GitLab 容器的 /var/opt/gitlab/backups 目錄中(如果你做了映射管理則備份文件在/home/middleware/gitlab/backups/ 文件夾,復(fù)制出去即可不用使用命令)。將其復(fù)制到本地:
docker cp 指令的作用是 將 Docker 容器內(nèi)部的文件復(fù)制到宿主機(jī)的指定目錄

docker cp <舊GitLab容器名>:/var/opt/gitlab/backups/<備份文件名>.tar /home/middleware/gitlab/backups/

2. 將備份文件復(fù)制到新 GitLab

將備份文件從舊服務(wù)器復(fù)制到新服務(wù)器的 /home/middleware/gitlab/data/backups 目錄:

scp /home/middleware/gitlab/backups/<備份文件名>.tar root@192.168.1.1:/home/middleware/gitlab/data/backups/

3. 恢復(fù)備份

在新 GitLab 服務(wù)器上運(yùn)行以下命令恢復(fù)備份:

停止 GitLab 服務(wù):

docker exec -it gitlab gitlab-ctl stop

恢復(fù)備份:

docker exec -it gitlab gitlab-backup restore BACKUP=<備份文件名>

重新啟動 GitLab 服務(wù):

docker exec -it gitlab gitlab-ctl start

4.檢查恢復(fù)是否成功:

  • 訪問 GitLab,確認(rèn)項目和用戶數(shù)據(jù)已恢復(fù)。
  • 運(yùn)行以下命令檢查日志:
docker logs -f gitlab

手動恢復(fù)另一臺備份gitlab數(shù)據(jù),先下載到本地電腦,再復(fù)制到目標(biāo)服務(wù)器
我的目標(biāo)服務(wù)器備份文件夾位于 /home/middleware/gitlab/data/backups,那么我
手動上傳已下載的備份文件到該目錄再執(zhí)行還原備份操作:

5.確認(rèn)備份文件是否存在

- 首先,確保備份文件 1741245298_2025_03_06_14.6.1_gitlab_backup.tar 確實存在于 /home/middleware/gitlab/data/backups 目錄中。
- 你可以通過以下命令檢查:
bash ls -l /home/middleware/gitlab/data/backups/1741245298_2025_03_06_14.6.1_gitlab_backup.tar

6.將備份文件復(fù)制到 GitLab 容器的默認(rèn)備份目錄

  • GitLab 容器默認(rèn)會從 /var/opt/gitlab/backups 目錄讀取備份文件。你需要將備份文件復(fù)制到容器內(nèi)的這個目錄。
  • 使用 docker cp 命令將備份文件復(fù)制到容器中:
docker cp /home/middleware/gitlab/data/backups/1741245298_2025_03_06_14.6.1_gitlab_backup.tar gitlab:/var/opt/gitlab/backups/

確認(rèn)文件已成功復(fù)制:

docker exec -it gitlab ls -l /var/opt/gitlab/backups/

設(shè)置正確的文件權(quán)限

  • 確保備份文件在容器內(nèi)的權(quán)限正確,GitLab 需要以 git 用戶的身份訪問該文件。
  • 運(yùn)行以下命令修改文件權(quán)限:
docker exec -it gitlab chown git:git /var/opt/gitlab/backups/1741245298_2025_03_06_14.6.1_gitlab_backup.tar
docker exec -it gitlab chmod 600 /var/opt/gitlab/backups/1741245298_2025_03_06_14.6.1_gitlab_backup.tar

8.運(yùn)行恢復(fù)命令

現(xiàn)在可以嘗試運(yùn)行恢復(fù)命令:

docker exec -it gitlab gitlab-backup restore BACKUP=1741245298_2025_03_06_14.6.1

注意:BACKUP= 參數(shù)只需要指定備份文件的基本名稱(即 1741245298_2025_03_06_14.6.1),不需要包含 _gitlab_backup.tar 后綴。

9.如果報錯

如果恢復(fù)過程中報錯,可能是備份文件本身有問題。你可以手動解壓備份文件,檢查其內(nèi)容:

docker exec -it gitlab mkdir -p /tmp/gitlab_backup
docker exec -it gitlab tar -xf /var/opt/gitlab/backups/1741245298_2025_03_06_14.6.1_gitlab_backup.tar -C /tmp/gitlab_backup
docker exec -it gitlab ls -l /tmp/gitlab_backup

檢查是否存在 backup_information.yml 文件:

docker exec -it gitlab cat /tmp/gitlab_backup/backup_information.yml

如果文件缺失或損壞,說明備份文件可能有問題,需要重新獲取備份。

10.修改 GitLab 備份目錄(可選)

- 如果你希望 GitLab 直接從 /home/middleware/gitlab/data/backups 目錄讀取備份文件,可以通過掛載卷的方式實現(xiàn)。
- 在啟動 GitLab 容器時,將主機(jī)目錄掛載到容器的 /var/opt/gitlab/backups 目錄:

docker run -d \
  --name gitlab \
  -v /home/middleware/gitlab/data/backups:/var/opt/gitlab/backups \
  -v /home/middleware/gitlab/config:/etc/gitlab \
  -v /home/middleware/gitlab/logs:/var/log/gitlab \
  -v /home/middleware/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

- 這樣,GitLab 會直接從 `/home/middleware/gitlab/data/backups` 目錄讀取備份文件。

總結(jié)

  • 將備份文件復(fù)制到 GitLab 容器的默認(rèn)備份目錄 /var/opt/gitlab/backups/
  • 確保文件權(quán)限正確。
  • 運(yùn)行恢復(fù)命令。
  • 如果問題仍然存在,檢查備份文件是否完整。

步驟 7:備份與恢復(fù)

備份

GitLab 提供了備份命令,可以備份所有數(shù)據(jù)(包括倉庫、數(shù)據(jù)庫等):

docker exec -it gitlab gitlab-backup create

備份文件會存儲在 /home/middleware/gitlab/data/backups 目錄中。

恢復(fù)

如果需要恢復(fù)備份,可以運(yùn)行以下命令:

docker exec -it gitlab gitlab-backup restore BACKUP=<備份文件名>

步驟 8:升級 GitLab

如果需要升級 GitLab 版本,可以按照以下步驟操作:

停止并刪除當(dāng)前容器:

docker stop gitlab
docker rm gitlab

拉取最新版本的 GitLab 鏡像:

docker pull gitlab/gitlab-ce:latest

重新運(yùn)行容器(使用相同的卷映射):

docker run -d \
  --hostname 192.168.1.1 \
  --publish 443:443 --publish 80:80 --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /home/middleware/gitlab/config:/etc/gitlab \
  --volume /home/middleware/gitlab/logs:/var/log/gitlab \
  --volume /home/middleware/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

常見問題

1. 端口沖突

如果主機(jī)的 22 端口已被占用,可以將 GitLab 的 SSH 端口映射到其他端口(如 2222),并修改 gitlab.rb 配置文件。

2. 配置文件未生成

如果 /home/middleware/gitlab/config/gitlab.rb 文件未生成,可能是容器初始化失敗??梢試L試手動生成配置文件:

docker exec -it gitlab gitlab-ctl reconfigure

總結(jié)

通過以上步驟,你可以成功使用 Docker 部署 GitLab,并將數(shù)據(jù)持久化到主機(jī)磁盤。同時,我們還介紹了如何從另一臺 GitLab 恢復(fù)數(shù)據(jù)到新的 GitLab 實例。這種方法不僅簡單高效,還能確保數(shù)據(jù)安全。如果你在部署過程中遇到問題,歡迎在評論區(qū)留言討論!

相關(guān)文章

  • Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實現(xiàn)

    Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實現(xiàn)

    本文主要介紹了Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決Docker容器時區(qū)及時間不同步問題的方法

    解決Docker容器時區(qū)及時間不同步問題的方法

    這篇文章主要介紹了解決Docker容器時區(qū)及時間不同步問題的方法,有效的解決了Docker容器時間同步問題,有興趣的可以了解一下。
    2016-12-12
  • Linux安裝Docker詳細(xì)教程

    Linux安裝Docker詳細(xì)教程

    這篇文章介紹了Linux安裝Docker的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Docker部署Java應(yīng)用程序的實現(xiàn)步驟

    Docker部署Java應(yīng)用程序的實現(xiàn)步驟

    本文主要介紹了Docker部署Java應(yīng)用程序的實現(xiàn)步驟,通過將Java應(yīng)用程序打包成一個Docker鏡像,可以實現(xiàn)快速部署、資源隔離和靈活擴(kuò)展,感興趣的可以了解一下
    2024-03-03
  • 在windows下的安裝Docker的教程

    在windows下的安裝Docker的教程

    這篇文章主要介紹了在windows下的安裝Docker的教程,注意只能是64的系統(tǒng),需要的朋友可以參考下
    2015-12-12
  • Docker 部署 Prometheus的安裝詳細(xì)教程

    Docker 部署 Prometheus的安裝詳細(xì)教程

    這篇文章主要介紹了Docker 部署 Prometheus及安裝方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Docker以掛載方式安裝RocketMQ的實現(xiàn)方式

    Docker以掛載方式安裝RocketMQ的實現(xiàn)方式

    Docker中安裝和使用RocketMQ有多種方式,本文主要介紹了Docker以掛載方式安裝RocketMQ的實現(xiàn)方式,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Linux Centos下使用腳本安裝Docker的方法

    Linux Centos下使用腳本安裝Docker的方法

    這篇文章主要介紹了Linux Centos下使用腳本安裝Docker的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Docker容器固定IP分配詳解

    Docker容器固定IP分配詳解

    本文介紹在centos7 docker環(huán)境下使用pipework腳本對容器分配固定IP。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker數(shù)據(jù)卷與攔截以及目錄攔截詳解

    Docker數(shù)據(jù)卷與攔截以及目錄攔截詳解

    在Docker中可以使用數(shù)據(jù)卷目錄掛載來將主機(jī)上的目錄與容器內(nèi)的目錄進(jìn)行映射,下面這篇文章主要給大家介紹了關(guān)于Docker數(shù)據(jù)卷與攔截以及目錄攔截的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評論