Docker

Gitlab-runner:Docker 訪問/var/lib/docker/devicemapper

  • August 9, 2017

我正在嘗試gitlab-runner在執行 Gentoo 的舊 x86 機器上進行設置。由於原始碼不適合 i686 架構,因此我已經打了更新檔 ,並且我已經啟用了執行所需的核心功能。目前正在返回錯誤gitlab-runner``docker``gitlab-runner

ERROR: Failed to create container volume for /builds/Python exit code 1  job=XXX project=XXX runner=HASH

docker反過來又返回此語句

devmapper: Failed to read /var/lib/docker/devicemapper/metadata/HASH with err: open /var/lib/docker/devicemapper/metadata/HASH: no such file or directory

這導致我詢問應在指定路徑上設置哪個使用者或組和權限。ls -al /var/lib/docker/devicemapper返回以下

total 16
drwx------  4 root root 4096 Aug  1 05:40 .
drwx--x--x 11 root root 4096 Aug  1 05:00 ..
drwx------  2 root root 4096 Aug  1 06:11 metadata
drwxr-xr-x  5 root root 4096 Aug  1 06:11 mnt

或者我的gitlab-runner權限可能不正確。docker 可以毫無問題地創建和下拉圖像並創建適當的套接字(一個問題表明這可能是原因,但在我的情況下並非如此)。

我設法解決了這個問題。編譯後,Gitlab-Runner 會為其使用 go-bindata 支持的每個架構嵌入一組預建構的 docker 鏡像。當第一次執行 gitlab-runner 時,它會提取適合某個系統的嵌入式二進製文件並嘗試使用它來執行它的任務。當我在 x86 機器上定位 docker 執行程序時,它提取了它認為是 x86 映像,我的更新檔為它提供了一個 AMD64 映像。結果 docker 會出錯,gitlab-runner 會放棄建構並抱怨。訣竅是回到繪圖板並編譯 x86 預建構映像。我只是想出瞭如何通過直接從 docker 呼叫預建構的映像來做到這一點,只有在 gitlab-runner 已經安裝並至少執行一次後才能做到這一點。

引用自:https://unix.stackexchange.com/questions/383295