遷移docker部署的gitlab過程(經(jīng)實戰(zhàn))
很多時候為了節(jié)省硬盤或者擴(kuò)容硬盤,需要將 Docker 部署的 GitLab 數(shù)據(jù)遷移到另一塊硬盤,核心在于停止容器 -> 遷移數(shù)據(jù)卷 -> 修改掛載路徑 -> 修正權(quán)限 -> 重啟容器。
重要提示
- 操作前務(wù)必備份:防止遷移過程中數(shù)據(jù)損壞。
- 權(quán)限問題:GitLab 對文件權(quán)限非常敏感,遷移后必須修正所有者權(quán)限(通常為
998:998)。 - 停機(jī)時間:遷移期間 GitLab 無法訪問,請選擇業(yè)務(wù)低峰期操作。
第一步:準(zhǔn)備工作
確認(rèn)新硬盤掛載點 假設(shè)新硬盤已掛載到 /mnt/new_disk,你計劃將數(shù)據(jù)存放在 /mnt/new_disk/gitlab。
df -h # 確認(rèn)新硬盤掛載點
mkdir -p /mnt/new_disk/gitlab/{config,logs,data}確認(rèn)當(dāng)前 GitLab 容器信息 查看當(dāng)前容器的掛載路徑(以便確認(rèn)源數(shù)據(jù)位置):
docker inspect gitlab | grep Mounts -A 20 # 或者如果是 docker-compose docker-compose ps
第二步:停止 GitLab 服務(wù)
為了保證數(shù)據(jù)一致性,必須停止容器。
# 如果是 docker-compose 部署 cd /path/to/your/gitlab-compose docker-compose down # 如果是 docker run 部署 docker stop gitlab docker rm gitlab # 遷移通常建議刪除舊容器重新創(chuàng)建,數(shù)據(jù)在卷里不會丟
第三步:遷移數(shù)據(jù)
使用 rsync 遷移數(shù)據(jù),它能保留文件權(quán)限、軟鏈接和時間戳,比 cp 更安全。
# 語法:rsync -av [源路徑/] [目標(biāo)路徑/] # 注意:源路徑末尾加 / 表示復(fù)制目錄內(nèi)容,不加表示復(fù)制目錄本身 sudo rsync -av /opt/gitlab/config/ /mnt/new_disk/gitlab/config/ sudo rsync -av /opt/gitlab/logs/ /mnt/new_disk/gitlab/logs/ sudo rsync -av /opt/gitlab/data/ /mnt/new_disk/gitlab/data/
第四步:修改配置文件
你需要告訴 Docker 新的數(shù)據(jù)路徑在哪里。
情況 A:使用 docker-compose.yml (推薦)
編輯 docker-compose.yml 文件,修改 volumes 部分:
version: '3'
services:
web:
image: 'gitlab/gitlab-ce:latest'
# ... 其他配置 ...
volumes:
# 修改為新的硬盤路徑
- '/mnt/new_disk/gitlab/config:/etc/gitlab'
- '/mnt/new_disk/gitlab/logs:/var/log/gitlab'
- '/mnt/new_disk/gitlab/data:/var/opt/gitlab'情況 B:使用 docker run 命令
在重新運行容器時,修改 -v 參數(shù):
docker run -d \
--hostname gitlab.example.com \
-p 443:443 -p 80:80 -p 2222:22 \
--name gitlab \
--restart always \
# 下面三行修改為新路徑
-v /mnt/new_disk/gitlab/config:/etc/gitlab \
-v /mnt/new_disk/gitlab/logs:/var/log/gitlab \
-v /mnt/new_disk/gitlab//var/opt/gitlab \
gitlab/gitlab-ce:latest第五步:修正文件權(quán)限 (關(guān)鍵步驟)
GitLab 的 Docker 鏡像內(nèi)部通常使用用戶 ID 998 運行。如果新硬盤的文件所有者不是 998,GitLab 將無法啟動或報錯 Permission denied。
# 將新目錄的所有者遞歸修改為 998:998 sudo chown -R 998:998 /mnt/new_disk/gitlab/ # 確保目錄權(quán)限正確 sudo chmod -R 755 /mnt/new_disk/gitlab/
第六步:啟動并驗證
啟動容器
# docker-compose docker-compose up -d # docker run # (執(zhí)行上面的 docker run 命令)
觀察日志
查看啟動日志,確保沒有 Permission denied 錯誤:
docker logs -f gitlab
當(dāng)看到 gitlab Reconfigured. 或 ok: run: gitlab-workhorse: (pid ...) 等字樣,說明啟動成功。
- 訪問驗證
- 打開瀏覽器訪問 GitLab 地址。
- 嘗試登錄、查看項目、提交代碼。
- 檢查后臺設(shè)置中的存儲路徑是否正常。
第七步:清理舊數(shù)據(jù) (確認(rèn)無誤后)
運行穩(wěn)定 1-2 天確認(rèn)無誤后,再刪除舊數(shù)據(jù)釋放空間:
# 備份舊數(shù)據(jù)以防萬一 mv /opt/gitlab /opt/gitlab.bak # 確認(rèn)一切正常后再刪除 # rm -rf /opt/gitlab.bak
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker搭建zookeeper集群和kafka集群并使用Java測試詳解
本文詳細(xì)介紹了如何在Linux虛擬機(jī)中使用Docker搭建Kafka集群環(huán)境,并通過Kafka-Manager進(jìn)行可視化管理,文章包括了從鏡像拉取、容器網(wǎng)絡(luò)設(shè)置、Zookeeper和Kafka集群搭建到測試和使用Java連接集群的全過程2026-01-01
Linux Docker安裝wordpress的方法詳解教程
這篇文章主要介紹了Linux Docker安裝wordpress的方法詳解教程的相關(guān)資料,需要的朋友可以參考下2016-10-10
Docker部署Microsoft Sql Server詳細(xì)步驟
大家好,本篇文章主要講的是Docker部署Microsoft Sql Server詳細(xì)步驟,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
docker logs-查看docker容器日志的實現(xiàn)
這篇文章主要介紹了docker logs-查看docker容器日志的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Docker網(wǎng)絡(luò)之單host網(wǎng)絡(luò)及使用案例
本文重點給大家講解Docker單主機(jī)網(wǎng)絡(luò)的相關(guān)知識及使用案例,重點是使用案例,感興趣的朋友一起看看吧2017-08-08

