RaspbianのDockerコンテナ化
なんかDockerのくじらさん(名前あるの?これ)がちょっと痩せてしまいましたが・・・・怒涛の検証でいじめすぎた。Raspbianの環境をDockerコンテナで動かしてみて、動作確認してみましたのでそのメモ。Raspbian食べてもらってまた肥えてもらいましょう。
前提条件はこれまでと一緒で、Mac上でやってます。Docker for Mac入ってればできると思います。多分Winでもubuntuとかでも変わらない。はず。じゃないと私にとってはコンテナ化してる意味があんまないので。どこでも同じ演習環境がすぐに立ち上げられます!ってのを作ってます。
$ docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:22:34 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:29:19 2019
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: v1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
少し前にも実は試してて、QEMU使って動かせるところまでは行けてますので、問題無いかと思ってますが、とりあえずイメージ作りからやってみようと思います。
Raspbianはイメージ起動させてtarで固めて・・・とかやらなくても、JAISTのリポジトリでルートファイルシステム配ってたので、ダウンロードしてきます。
最新日付のroot.tar.xzをダウンロードしてきて、いつもの感じでコンテナイメージ化をしてみると・・・
$ cat root.tar.xz | docker import - r/raspbian:2019-09-30
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
r/raspbian 2019-09-30 0feb9cb5052b 14 seconds ago 947MB
1GB近くあるので思ったより大きいですが・・・まあここまでは想定通りで、こっから先人たちが苦労していたところですねきっと。QEMU使ってCPUエミュレート!みたいな必殺技みたいな感じを想像しつつ、homebrewでインストールしようとしたら別途コマンドラインツールキットが必要だよ!インストールしろよ!と丁寧にコマンドまで教えてくれるので、その通りに入れてみる。その後、brew install qemuでインストール開始。
・・・で、インストールが終わるまでにいろいろネットで探してたら、こんなもの見つけてしまった。
な、なんすかこれ・・・無敵じゃないっすか・・・。これ使えばいいんじゃね?できちゃうんじゃね?ってことで、インストールしたqemuを確認すらせずに下記実行。
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
$ docker run --rm -t arm64v8/ubuntu uname -m
aarch64
・・・・aarch64!!!
まじっすか・・・とちょっとあぜんとしつつ、作ったイメージを使ってコンテナを作成してみます。
$ docker run -it -d -p 8989:80 r/raspbian:2019-09-30 /bin/bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0df1892ca2d r/raspbian:2019-09-30 "/bin/bash" 1 minutes ago Up 1 minutes 0.0.0.0:8989->80/tcp festive_cannon
動いてますね・・・。とりあえずapacheぐらいは立ち上げてみたかったので、ポート8989で見れるようにしておきました。Docker for Macだとブリッジ ネットワークとかいじってコンテナと同セグメントにするのがめんどくさかったので、とりあえず使えればオッケーだと思ってます。研究で使う本格的な環境は別途外付けSSDにインストールしたUbnuntu上で作っています。
apacheのインストールと立ち上げも一応記載
$ apt-get update
$ apt-get install apache2
$ service apache2 start
全く設定してないのでもちろんですが、Defaultページが表示できました。
いいのかな。こんな簡単に動いちゃっていいのかな。なんか間違ってませんか?教えてください。誰か詳しい方。でも最初にイメージ作った時には確かにそのまま動かないのは確認したしなあ。
とりあえず動作はしたので、あとはRaspbian用の脆弱性とかわざと作ったりして、ハッキング演習みたいなことができる環境が作れたらと思ってます。
(追記)
mariadbとPHPとmysqlのphp拡張入れて、WordPressのソース仕込んで設定画面が見れました!Raspbianでやる意味は・・・あんま無いけど、とりあえず問題なくWebアプリケーションも動くぞ!ということで。
この記事が気に入ったらサポートをしてみませんか?