KURO-BOX PRO (玄箱Pro) でコンテナが動作するか
目次
はじめに
押し入れでずっと眠らせていた KURO-BOX/PRO (玄箱Pro) に活を入れるべく、ひとまず最新の Debian 10 を入れました。
さらに何かしらアプリケーションを動かすことを考えたとき、今の時代はコンテナを使うのが一般的ですね。
Debian 10 では apt で Docker が入るものの、そもそも KURO-BOX/PRO みたいな古い低スペックなマシン (というか、NAS) でコンテナが動くのかわからなかったため、確認してみました。
KURO-BOX/PRO のスペック & 構成
KURO-BOX/PRO スペックや構成は次の通りです。
- CPU : Marvell Orion (ARM EABI 32bit (armel) / シングルコア 400MHz)
- メモリ : 128MB (DDR2)
- ブート方法 : HDD ブート (SATA II 接続)
docker info
docker info
コマンドの結果は次の通りです。
1Containers: 0
2 Running: 0
3 Paused: 0
4 Stopped: 0
5Images: 1
6Server Version: 18.09.1
7Storage Driver: overlay2
8 Backing Filesystem: extfs
9 Supports d_type: true
10 Native Overlay Diff: true
11Logging Driver: json-file
12Cgroup Driver: cgroupfs
13Plugins:
14 Volume: local
15 Network: bridge host macvlan null overlay
16 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
17Swarm: inactive
18Runtimes: runc
19Default Runtime: runc
20Init Binary: docker-init
21containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
22runc version: 1.0.0~rc6+dfsg1-3
23init version: v0.18.0 (expected: fec3683b971d9c3ef73f284f176672c44b448662)
24Security Options:
25 apparmor
26 seccomp
27 Profile: default
28Kernel Version: 4.19.0-12-marvell
29Operating System: Debian GNU/Linux 10 (buster)
30OSType: linux
31Architecture: armv5tel
32CPUs: 1
33Total Memory: 121.2MiB
34Name: orion
35ID: IEEP:32SM:IPVN:IGHN:HIRZ:VC5Z:DYA6:4NNN:SFC7:HFLN:OWVQ:SSW6
36Docker Root Dir: /var/lib/docker
37Debug Mode (client): false
38Debug Mode (server): false
39Registry: https://index.docker.io/v1/
40Labels:
41Experimental: false
42Insecure Registries:
43 127.0.0.0/8
44Live Restore Enabled: false
45
46WARNING: No memory limit support
47WARNING: No swap limit support
48WARNING: No kernel memory limit support
49WARNING: No oom kill disable support
50WARNING: No cpu cfs quota support
51WARNING: No cpu cfs period support
52WARNING: No cpuset support
動作可能なベースイメージ
KURO-BOX/PRO は CPU アーキテクチャは 32bit の ARM ではあるものの、一般的な armhf
ではなく armel
であるため、ARM 用のイメージが存在したとしても動作するとは限りません。
各ディストリビューションのベースイメージやよく使うイメージが実際に動作するかを確認した結果は次の通りです。
docker run
で bash
や ash
が実行できれば動作可としています。
イメージ | Pull可 | 動作可 |
---|---|---|
debian:buster | ○ | ○ |
debian:stretch | ○ | ○ |
ubuntu:focal | ○ | × |
ubuntu:bionic | ○ | × |
centos:8 | × | - |
centos:7 | ○ | × |
fedora:33 | ○ | × |
alpine:3 | ○ | × |
busybox:latest | ○ | ○ |
とりあえず、Debian は動いてくれたので、大体のアプリケーションは動かせそうです。
Ubuntu や CentOS が動かないのは想定通りとして、Alpine は動くと期待したのですが残念な結果でした。
その他メモ
CPU もメモリも少なすぎるせいで、docker pull に数分かかりました。 特に、ダウンロードしたレイヤーファイルの展開に時間がかかっていました。
また、dockerd と containerd の2つの daemon プロセスでメモリを 60% ぐらい使うため、明らかにメモリ不足です。 daemonless の Podman を使いたかったのですが、残念ながら armel 用のバイナリは提供されていませんでした。
結論
ベースイメージを Debian にすれば、KURO-BOX/PRO でもコンテナを動かすことができます。
しかし、CPU やメモリが少ないために快適に動作することはなく、コンテナを使うことによるオーバーヘッド (特に dockerd) が相対的に大きいため、コンテナを使わないほうが良いでしょう。