最近想搭建一套CI/CD環境嘗試一下,因為手里雲服務太小了(1C1G),撐不起來gitlab和jenkins。恰巧年前配了台高配版的windows機器,就想在家里的機器上通過docker裝gitlab和jenkins。
但是經過嘗試,發現docker在windows10下面使用有很多坑,從網上帖子看,好像這個問題短期之內修復不了(涉及到文件系統了),故總結,並將踩坑經驗分享給大家
環境:win10專業版,使用hyper V支持docker,docker desktop community 2.2.0.4(43472)
docker掛載windows目錄到volume有問題:
如果是只讀的話可以,docker可以讀取文件
如果需要寫入,如新建文件等,應用會爆出權限不符等提示信息,總之就是不能寫入
解決辦法:
使用命令docker volume create VOLUME-NAME創建一個volume,並直接使用這個volume,就可以達到持久化數據的目的了
例:
然后又帶來了一個新問題:
如果需要訪問掛載的文件夾,怎么訪問?怎么備份這些文件?
直接給出方法:
# 隨便拉一個鏡像,我比較喜歡centos,ubuntu等亦可
docker pull centos
# 創建一個root鏡像,與宿主機相通
# 關閉這個docker,將不會殘留任何容器信息
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host centos /bin/bash
# 切換主機環境
chroot /host
# 打包鏡像文件到備份文件夾
# 我之前在docker desktop共享了E盤文件夾,被掛載到了host_mnt目錄下面,所以可以直接將tar打包到備份目錄下,當然不建議使用中文目錄
# /host_mnt/e/dockerdata/backup/是windows e盤預先創建好一個用於備份的文件夾
# /var/lib/docker/volumes是使用docker volume create創建出來的目錄位置,在這里可以看到所有的volume
# gitlab-data是創建的volume名稱
tar -zcvf /host_mnt/e/dockerdata/backup/gitlabdata.tar.gz /var/lib/docker/volumes/gitlab-data
執行這條命令之后,你會在你的windows的目錄E:\dockerdata\backup下發現gitlabdata.tar.gz這個備份文件
如果數據復位,可考慮逆操作這條tar指令
參考:
https://blog.csdn.net/weixin_30677475/article/details/99035126
