raspberry pi + docker + alpine で apk が動かなくなる問題
raspberry pi 3 bでdockerを動かしていて、コンテナからi2cにアクセスしたかったので、 apk update && apk add i2c-tools
した。
が、動かなかった。
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/armv7/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.14/main: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.14/main: No such file or directory
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/armv7/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.14/community: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.14/community: No such file or directory
2 errors; 14 distinct packages available
The command '/bin/sh -c apk update' returned a non-zero code: 2
みたいな感じで。
Raspberry PiのDocker環境でAlpine Linuxイメージ(3.13以降)を使用する際の注意点
を見つけた。
この記事の通り、docker run
に --security-opt=seccomp=unconfined
オプションを付けることで、コンテナ内に入って apk update
はできるようになった。
改めて読んだら、Raspberry PiのDocker環境でAlpine Linuxイメージ(3.13以降)を使用する際の注意点
にもalpine 3.13からtime系の要件が変わったことは書いてあった。
きっと根本は同じだったんだな。
が、いろいろ試した限り docker build
(Dockerfile に書いた RUN apk update) にはこの解決方法が適用できなかった。
alpine 3.13, armv7 network-access seems to be broken
にコメントされている方法で、
ホスト側(raspberry pi側)の libseccomp2 を debian から公開されたものにアップデートすることで解決した。
↑のissueが非常に長くて読み切れてないのだが、alpine 3.13からtime系の要件が変わった?ことが発端なのかな?
そのうち raspbian にもアップデートが来るのではないかな。
途中諦めて、他のイメージで手を打とうかと思ったが、ひとまず解決できてよかった。
これから他の問題にぶつかるかもだけど。