LoginSignup
7
6

More than 5 years have passed since last update.

Parallella で Docker (が動くのは近いかもしれない)

Posted at

漢なら Parallella(ARM Linaro) でも Docker 動かしたいですね! Raspberry Pi で動いている報告があるので, Parallella でも動くはず!

現時点では動かない

が, 現時点ではカーネルをリコンパイルしないとまずは動かないことが判りました. カーネルリコンパイルをする旅に出ます. 果報は寝て待ちましょう.

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

Docker は go 言語で記述されているので, go コンパイラをインストールします.

なぜか go 言語での websocket のパッケージで hg(mercurial) が求められるので, mercurial も忘れずにインストールしておきましょう.

$ sudo apt-get install lxc
$ sudo apt-get install bridge-utils
$ sudo apt-get install mercurial
invoke-rc.d: initscript lxc-net, action "start" failed.

と出たりしますがとりあえず無視して進めます.

ARM 版 go 1.2 コンパイラを http://dave.cheney.net/unofficial-arm-tarballs から取得します. Parallella の場合は arm7 multiarch 版を使いましょう.

GOROOT, GOPATH を適切に設定しておきます.

Docker のビルド.

Docker のソースを持ってきてビルドします. 現在は x86 版以外は

The docker runtime currently only supports amd64 (not %s)

と実行時エラーを出すようになっているので, 無理矢理パッチを当てて解決します.

以下を参考に,

engine/engine.go

で GOARCH="arm" を通すようにしておきます.

-   if runtime.GOARCH != "amd64" {
+   if runtime.GOARCH != "amd64" && runtime.GOARCH != "arm" {
        log.Fatalf("The docker runtime currently only supports amd64 (not %s). This will change in the future. Aborting.", runtime.GOARCH)
    }
$ git clone https://github.com/dotcloud/docker.git
$ cd docker
$ go get
$ cd docker
$ go get
$ go build
$ file docker

ブリッジインターフェイス

docker0 ネットワークが無いと言われるので, インターフェイスをマニュアルで作ります.

sudo brctl addbr bridge0

add bridge failed: Package not installed

なんたるちや! パッケージが無いというエラーとなりました. これは調べてみると Linux カーネルで bridge が有効になっていないのが原因のようです.

カーネルのビルドパラメータを調べてみます.

$ zcat /proc/config.gz | grep BRIDGE
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_BRIDGE is not set

bingo. 残念ながら BRIDGE 機能が有効になっていませんでした. というわけで, まずはカーネルのリコンパイルが必要になります.

To be continued…

7
6
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
7
6