我正在尝试gitlab-runner
在运行 Gentoo 的旧 x86 机器上进行设置。我有修补过的 gitlab-runner
因为源代码不适合 i686 架构,并且我已经启用了运行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
可以毫无问题地创建和下拉图像并创建适当的套接字(一个问题表明这可能是原因,但在我的情况下并非如此)。
答案1
我设法解决了这个问题。编译时,Gitlab-Runner 使用 go-bindata 为其支持的每个架构嵌入一组预构建的 docker 镜像。当第一次运行 gitlab-runner 时,它会提取适合系统的嵌入式二进制文件,并尝试使用它来执行其任务。由于我的目标是一台 x86 机器上的 docker 执行器,它提取了它认为是 x86 映像的内容,因此我的补丁为它提供了 AMD64 映像。结果,docker 会出错,gitlab-runner 会放弃构建并抱怨。诀窍是回到绘图板并编译 x86 预构建映像。我只是想出了如何通过直接从 docker 调用预构建的映像来做到这一点,只有在 gitlab-runner 已经安装并至少运行一次后才能做到这一点。