因?yàn)槟承┰虬担枰獙⒁延械囊惶?gitlab 遷移到別的服務(wù)器,可是我從沒聽說過啊冠摄,沒關(guān)系糯崎,“看不懂不影響做題”,我們直接開始河泳。
詢問前同事后得知,這個 gitlab 是跑在 Docker 上的年栓,ok拆挥,裝 Docker !
(...省略很多字)最后我選擇 ubuntu 18.04 作為服務(wù)器系統(tǒng)某抓。開始安裝纸兔!
卸載舊 Docker
sudo apt-get remove docker docker-engine docker.io
設(shè)置 Docker repository
- 更新apt包索引
sudo apt-get update
- 安裝相關(guān) apt 包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker官方GPG key
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 設(shè)置穩(wěn)定版的 Docker 倉庫
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 安裝 Docker CE
- 更新apt包索引
sudo apt-get update
- 安裝
sudo apt-get install docker-ce
- 驗(yàn)證
sudo docker run hello-world
如果出現(xiàn)下圖說明安裝成功docker-安裝成功測試.png
有了 Docker ,再就是 gitlab 了否副,裝 gitlab 汉矿!
直接運(yùn)行!
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8080:80 --publish 8022:22 \
--name gitlab \
--restart always \
--volume /mnt/d/data/docker/gitlab/config:/etc/gitlab \
--volume /mnt/d/data/docker/gitlab/log:/var/log/gitlab \
--volume /mnt/d/data/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
下載完成后就 ok 啦备禀!
這里說一下 --volume /mnt/d/...
為了能將數(shù)據(jù)存到系統(tǒng)盤之外洲拇,需要先掛載一塊硬盤,但是這個盤的格式需要和系統(tǒng)盤格式一樣曲尸,不然會有權(quán)限問題導(dǎo)致 docker 無限重啟赋续。我在這里停頓了24小時,表示很傷心另患。
掛載硬盤纽乱,咱也不會啊,記錄一下昆箕。
首先是確定硬盤是否分區(qū)鸦列,我開始跳過了這一步租冠,發(fā)現(xiàn)并不能掛載成功,然后我就老老實(shí)實(shí)走了一遍薯嗤。
sudo fdisk -l
找到自己的硬盤 /dev/sdb
sudo fdisk /dev/sdb
開始分區(qū) 輸入 m 顯示幫助
輸入 n 添加新分區(qū)顽爹,隨后直接 enter 選擇默認(rèn)值就行了,最后
sudo fdisk -l
查看一下是否創(chuàng)建成功
然后將新分區(qū)格式化為 ext4 sudo mkfs -t ext4 /dev/sdb1
這一步也很關(guān)鍵应民,之前因?yàn)橛眠^ windows 系統(tǒng)话原,但是 windows 是 ntfs 格式的盤,各種寫入權(quán)限問題诲锹,最后選擇了 ubuntu18.04繁仁,兩個盤全部格式化,全部為 ext4 归园,勁往一處使才能成功黄虱。
掛載,需要先建一個空文件夾
sudo mkdir /mnt/d
然后 mount
sudo mount /dev/sdb1 /mnt/d
這樣就掛載成功了庸诱!
接下來就是遷移了捻浦,需要先備份然后移動到本機(jī),最后 restore 就行了桥爽。這里需要保證兩邊的 gitlab 版本相同朱灿,所以備份前先升級一下,大概就是
停止 gitlab 服務(wù)
sudo docker stop gitlab
刪除 gitlab 容器
sudo docker rm gitlab
查看 images ID
sudo docker image ls
刪除 images
sudo docker rmi idxxxx
最后執(zhí)行 docker run --detach ... 就 ok 啦钠四。注意盗扒,這里的配置是原服務(wù)器上 gitlab 的配置,我很幸運(yùn)缀去,前同事有記錄侣灶,別的情況暫不考慮。
開始備份
進(jìn)入原服務(wù)器 gtilab 內(nèi)部
docker exec -it gitlab /bin/bash
直接備份缕碎,網(wǎng)上有說需要停掉服務(wù)的褥影,我想著我這里不會有人提交了,就沒有停咏雌,實(shí)際也是成功了
gitlab-rake gitlab:backup:create
然后就是等待凡怎,最終會生成一個名字類似于 1577708096_2019_12_30_12.6.1_gitlab_backup.tar 的文件,注意這里需要有足夠的空間來生成处嫌,不然會失敗栅贴。
運(yùn)行完成后會有提示,說 gitlab.rb 和 gitlab-secrets.json 這兩個文件需要手動備份熏迹,我們一會一起復(fù)制出來就好了檐薯。
移動所有備份文件,這里我們回到新服務(wù)器上
scp -r root@原服務(wù)器ip:原服務(wù)器上備份文件地址 新服務(wù)上備份應(yīng)該存放的位置
比如我的就是
scp -r root@192.168.1.66:/data/docker/gitlab/data/backups/1577708096_2019_12_30_12.6.1_gitlab_backup.tar /mnt/d/data/docker/gitlab/data/backups/
scp -r root@192.168.1.66:/data/docker/gitlab/config/gitlab.rb /mnt/d/data/docker/gitlab/config/
scp -r root@192.168.1.66:/data/docker/gitlab/config/gitlab-secrets.json /mnt/d/data/docker/gitlab/config/
這里會有權(quán)限問題,打開讀寫權(quán)限
chmod 777 /mnt/d/data/docker/gitlab/data/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar
最后坛缕,執(zhí)行恢復(fù)命令墓猎,進(jìn)入新服務(wù)器 gitlab 容器內(nèi)部
docker exec -it gitlab /bin/bash
gitlab-rake gitlab:backup:restore BACKUP=1577708096_2019_12_30_12.6.1
到這里就完成了,一切正常赚楚,開心毙沾!
最后小總結(jié):
- 連接 ssh
ssh 用戶名@ip
例如ssh root@192.168.1.66
- 移動文件
scp -r 用戶名@源服務(wù)器:文件路徑 用戶名@目標(biāo)服務(wù)器:文件路徑 // -r 表示文件夾下所有內(nèi)容
- 修改權(quán)限
chmod 777 文件路徑
- 權(quán)限問題很麻煩,搞不懂的就運(yùn)行同一個體系宠页,磁盤全為 ext4 格式
- 格式化磁盤需要按流程走一遍左胞,特別是之前有分區(qū) ntfs 過
- 本次實(shí)現(xiàn)所用系統(tǒng) ubuntu18.04 ,gitlab-ce 12.6.1
我是虛玩玩举户,與君共勉~