Gitlab-runner: Dockerアクセス​​ `/var/lib/docker/devicemapper`

Gitlab-runner: Dockerアクセス​​ `/var/lib/docker/devicemapper`

私はgitlab-runnerGentooを実行している古い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 executor を対象にしているため x86 イメージと思われるものをインポートするので、私のパッチは AMD64 イメージを提供します。その結果、dockerはエラーが発生し、gitlab-runnerはビルドを放棄し、苦情を表示します。秘訣は、描画ボードに戻って事前に構築されたx86イメージをコンパイルすることです。私はdockerから事前に構築されたイメージを直接呼び出し、gitlab-runnerをインストールし、1回以上実行した後にこれを行う方法を見つけました。

おすすめ記事