0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ラズパイ4 busterにdockerインストール

Posted at

ラズパイ4へのraspbian busterインストールは前記事(ラズパイ4にraspbian busterをセットアップ)を参照。
環境を汚したくないのでdocker運用したい。…ということでインストールを行ったが、結構ハマった…。

busterへのdockerインストールについて

raspbian buster用のdockerは正式にラズパイリポジトリに公開されていない。
おそらく将来的にはstrechと同じ手順でインストールできるようになると思うので、strechの手順も載せておく。
※現状はbusterでstrechの手順を実行してもエラーになるため注意。

busterの場合

必要パッケージのインストール

$ sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

debian用のリポジトリを追加する。

$ sudo bash -c "echo 'deb [arch=armhf] http://download.docker.com/linux/debian buster stable' > /etc/apt/sources.list.d/docker.list"

インストール

$ sudo apt update
$ sudo apt install --no-install-recommends docker-ce

--no-install-recommendsオプションを付けるのがミソ。
このオプションを付けないと、dockerと一緒にインストールされるaufs-dkmsのインストールが失敗する(なお、失敗してもそのままdockerは使用できる様子)。原因究明の試行錯誤はトラブル対応の履歴で後述する。

strechの場合(1)

詳細は公式のdebian docker-ceインストール手順を参考にするとよい。

必要パッケージのインストール

$ sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

GPGキー追加

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

インストール

$ sudo apt update
$ sudo apt install docker-ce

strechの場合(2)

こっちのほうが楽。たぶん上述(1)と同じ処理だと思う(未確認)。

$ curl -sSL https://get.docker.com | sh`

トラブル対応の履歴

以下はdocker-ceインストール時にハマった試行錯誤記。

--no-install-recommendsを付けずにインストールすると、エラーが発生する。

$ sudo apt install docker-ce
 :
dpkg: パッケージ aufs-dkms の処理中にエラーが発生しました (--configure):
 installed aufs-dkms package post-installation script subprocess returned error exit status 10
cgroupfs-mount (1.4) を設定しています ...
docker-ce (5:19.03.5~3-0~debian-buster) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
systemd (241-7~deb10u2+rpi1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
処理中にエラーが発生しました:
 aufs-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

エラーログによるとinstalled aufs-dkms package post-installation script subprocess returned error exit status 10とあるので、post-installation scriptの処理がエラーこいてるっぽい。

dpkgやapt-get関連でエラーが出た時の対処法を参考にして、エラーステータスを確認する。

$ sudo dpkg --audit
以下のパッケージは最初の設定中に問題が発生したため、設定が終了していません。
dpkg --configure <パッケージ> か dselect で設定 (configure) メニューオプショ
ンを使って設定作業を再試行しなければなりません:
 aufs-dkms            DKMS files to build and install aufs

apt installのエラーログどおりだが、aufs-dkmsの設定がうまくいってないらしい。

aufs-dkmsって、いらない子なんじゃない?とも思うが、ひとまず設定ファイルを検索してみる。

$ sudo find / -name aufs-dkms*
/usr/share/doc/aufs-dkms
/var/cache/apt/archives/aufs-dkms_4.19+20190211-1_all.deb
/var/lib/dpkg/info/aufs-dkms.list
/var/lib/dpkg/info/aufs-dkms.postinst
/var/lib/dpkg/info/aufs-dkms.md5sums
/var/lib/dpkg/info/aufs-dkms.prerm

post-installation scriptに相当するのは、/var/lib/dpkg/info/aufs-dkms.postinstっぽいかな、とアタリをつけた。

Debian ポリシーマニュアル:Chapter 6 - パッケージ管理スクリプトとインストールの手順によると「postinst は展開された後に呼び出されます」とのこと。

一度、再設定コマンドを実行してみたところ、kernelが原因っぽいことが見え隠れする…。

$ sudo dpkg --configure aufs-dkms
Building initial module for 4.19.75+
Error! Bad return status for module build on kernel: 4.19.75+ (armv7l)
Consult /var/lib/dkms/aufs/4.19+20190211/build/make.log for more information.

詳細ログ(/var/lib/dkms/aufs/4.19+20190211/build/make.log)を見てみると、read/writeでエラーになっている。
もしかして、新しいカーネルでは古い機能がサポートされなくなったか??

 :
make[1]: ディレクトリ '/usr/src/linux-headers-4.19.75+' に入ります
  CC [M]  /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/module.o
  CC [M]  /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/sbinfo.o
  CC [M]  /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/super.o
  CC [M]  /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/branch.o
In file included from /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/branch.h:33,
                 from /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/aufs.h:38,
                 from /var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/sbinfo.c:23:
/var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/super.h:134:2: error: unknown type name ‘vfs_readf_t’
  vfs_readf_t  si_xread;
  ^~~~~~~~~~~
/var/lib/dkms/aufs/4.19+20190211/build/fs/aufs/super.h:135:2: error: unknown type name ‘vfs_writef_t’
  vfs_writef_t  si_xwrite;
 :

ググると同じ問題がissue:Kernel missing support for aufs-dkms #3021にも挙がっており、下記コメントがついている。

i used to install docker ce 18.09.0 on Raspian Buster
(意訳)docker-ce18.09なら使えるよ!

That does not work either.I am getting the same error:
(意訳)つかえねーよ。同じエラーでたぞ

Added --no-install-recommends to my docker ce installation step.
(意訳)--no-install-recommendsオプションを付けろ

aufs-dkms is not a dependency of docker-ce, but a recommendation.
docker is not default to use aufs anymore; It now default prefer to use overlayfs2.
(意訳)aufs-dkmsはdocker-ceに不要。デフォルトのファイルシステムはoverlay2だし。

現在のdocker versionを確認してみる。

$ docker -v
Docker version 19.03.5, build 633a0ea

バージョンは19.03。情報通りならバージョン指定するか、19.03でも--no-install-recommendsをつければいけるかも。

おや?インストール(post処理)が失敗してもdockerコマンドが動いてるな…。ちょっとrunを実行してみるか。

$ sudo docker run --rm hello-world

Hello from Docker!
 :

って、動いてるじゃん!???(マジかよ!)
インストールまではうまくいってて後処理(post)が失敗してるだけってことみたい。

一度、アンインストールして--no-install-recommendsで再インストールしてみる。

$ sudo apt purge docker-ce
 :
Error! Bad return status for module build on kernel: 4.19.75+ (armv7l)
Consult /var/lib/dkms/aufs/4.19+20190211/build/make.log for more information.
dpkg: パッケージ aufs-dkms の処理中にエラーが発生しました (--configure):
 installed aufs-dkms package post-installation script subprocess returned error exit status 10
処理中にエラーが発生しました:
 aufs-dkms

purgeするときにも同じエラーがでてきやがる。。。
しょうがないので、aufs-dkms.postinstという原因っぽいファイルをリネームしてpurge実行したらうまくいった。

$ sudo mv /var/lib/dpkg/info/aufs-dkms.postinst /var/lib/dpkg/info/aufs-dkms.postinst.bak
$ sudo apt purge docker-ce  # 成功
$ sudo apt autoremove
$ sudo rm /var/lib/dpkg/info/aufs-dkms.postinst.bak

あらためてインストール。

$ sudo apt install --no-install-recommends docker-ce

エラーなしで成功ッッッ!!!ついにきたか!

aufs-dkmsのインストール(未実施)

前述のように--no-install-recommendsなしでdockerをインストールした場合、aufs-dkmsがインストールできない。
だがpurgeの挙動をみると、aufs-dkms.postinstファイルを削除してから、configureしなおせばインストールできると思われる。
削除してよいのかという疑問は残るけど。・・というか使えるんだから放置でもいいかもしれない。

# 未検証だけど、これでひとまずエラーは消える(はず)
sudo rm /var/lib/dpkg/info/aufs-dkms.postinst
sudo dpkg --configure aufs-dkms

動作確認

$ docker -v
Docker version 19.03.5, build 633a0ea

docker run hello-world, docker imagesなど問題なく動く。
ただ、run実行後にコンテナ起動するまでが異常に遅い…。起動に10秒くらいかかる。うーん・・
ラズパイ3+strech+dockerの組合せでは遅くなる現象はなかったので、まだどこかおかしい様子。

でも、ひとまずインストールはできた。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?