Docker Gitlab和Jenkins的遷移

我以爲本身遷移的方法挺 low 的,但時間緊迫,並且公司在 gitlab 也沒帳號,只好經過很原始的文件 cvs 操做。仍是有點點小坑的,記錄下。git

一開始我很傻的覺得,只要把 data 文件 copy 過去就能夠了,用 scp 搞了半天沒搞好,文件權限、全部者全亂了,真的是太傻太天真。後來查了下資料換了思路,分別備份容器和數據,再 scp 慢慢磨合。sql

Gitlab

Gitlab的data即便tar後用scp傳過在再解壓也不能直接使用,會報 postgresql 文件的 permission denied 。docker

對比發現docker的Gitlab會在建立的時候新建 postgresql 用戶,但每次用戶名都不同,致使此問題。安全

嘗試將 date 權限 chmod -R 777 未能解決問題。採用 Gitlab 自帶的備份恢復解決問題。bash

參考自Docker容器遷移 ---- 導入和導出容器 Gitlab如何進行備份恢復與遷移?服務器

Gitlab內備份

Gitlab容器建立命令微信

docker run -d \
   --privileged=true \
   -p 444:443 -p 4000:80 -p 23:22 \
   --name gitlab \
   --restart always \
   -v /storage/data/gitlab/config:/etc/gitlab \
   -v /storage/data/gitlab/logs:/var/log/gitlab \
   -v /storage/data/gitlab/data:/var/opt/gitlab \
   gitlab/gitlab-ce:latest
複製代碼

進入容器身體,哦不,內部;app

docker exec -it gitlab /bin/bash
複製代碼

緊接着,趁勝追擊,打出備份命令;分佈式

gitlab-rake gitlab:backup:create
複製代碼

這時在 /var/opt/gitlab/backup 目錄會有備份文件,文件名相似 1559814146_2019_06_06_11.6.3_gitlab_backup.targitlab

事情作完,再也不糾纏,把這個備份包用scp傳到新的服務器上。

scp 1559814146_2019_06_06_11.6.3_gitlab_backup.tar administrator@172.16.30.151:/home/administrator
複製代碼

接着用docker把當前容器也備份

docker export gitlab>gitlab_c.tar
複製代碼

一樣的,scp到新的服務器

scp gitlab_c.tar administrator@172.16.30.151:/home/administrator
複製代碼

登陸到新的服務器,導入容器

docker import gitlab_c.tar gitlab:1.0
複製代碼

啓動,手動導入的鏡像啓動的時候要把執行命令 /assets/wrapper 也帶上,執行命令用 docker inspect gitlab 查看,短的 docker ps 直接看獲得。

docker run -d \
    --privileged=true \
    -p 444:443 -p 4000:80 -p 23:22 \
    --name gitlab \
    --restart always \
    -v /storage/data/gitlab/config:/etc/gitlab \
    -v /storage/data/gitlab/logs:/var/log/gitlab \
    -v /storage/data/gitlab/data:/var/opt/gitlab \
    gitlab:1.0 \
    /assets/wrapper
複製代碼

進入容器內部,導入 Gitlab 備份包

gitlab-rake gitlab:backup:restore BACKUP=1559814146_2019_06_06_11.6.3
複製代碼

重啓容器docker restart gitlab便可,Gitlab備份恢復須要版本號一致,直接備份容器不會出現問題。

Jenkins

Jenkins 相對 Gitlab 好點的地方是全部的數據都在 jenkins_home 目錄下,並且只有一個要求——該目錄的全部者 uid 爲1000。

TMD 我用 chown 改了半天發現文件夾全部者始終爲 administrator,最後發現用戶 administrator 的uid就是 1000 。。。

直接同 Gitlab 備份容器和 data 再 scp 過去解壓就行了。

關鍵是裏面腳本好多要改的啊~~~

腳本內容詳見怎麼用Jenkins配置分佈式環境的安全發佈?


歡迎關注微信公衆號,提供感悟和技術類原創文章。微信搜索小兵張健或掃描如下二維碼。

相關文章
相關標籤/搜索