DockerでRaspbianコンテナを立ち上げる
 Author: 水卜

Dockerを使って、ホストと異なるCPUアーキテクチャ(ARM)のRaspbianコンテナを実行する。
ホストPCはMacを使用。
ラズパイの開発環境やビルド環境として便利。

Raspbianイメージ作成

以下でraspbianイメージを配布している。

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/archive/2020-02-14-13:49/

tarファイルをもとにイメージを作成。

$ wget http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/archive/2020-02-14-13:49/root.tar.xz
$ docker image import ./root.tar.xz raspbian-stretch-lite:2019-04-08
# imageが入っていることを確認
$ docker images | grep rasp
raspbian-stretch-lite               2019-04-08          fb9b0445ff2d        31 minutes ago      1.03GB

実行

上記のDockerイメージはARMv7用のDockerイメージであるため、そのまま実行できない。

下記のqemu-user-staticを使うと、QEMUを使った異なるCPUアーキテクチャのバイナリ実行環境を用意してくれるため、ARMv7イメージも実行できるようになる。

https://github.com/multiarch/qemu-user-static

# 以下を実行することで、異なるCPUアーキテクチャのイメージを実行できるようになる
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
$ docker images | grep qemu
multiarch/qemu-user-static          latest              f52fa63c8767        5 weeks ago         130MB
# ラズビアンのコンテナが立ち上がることが確認できる
$ docker run -it raspbian-stretch-lite:2019-04-08 bash
root@38dc30cda127:/# ls
bin  boot  dev	etc  home  lib	lost+found  media  mnt	opt  proc  root  run  sbin  srv  sys  tmp  usr	var
root@38dc30cda127:/# uname -m
# ARMv7
armv7l