ぺんぎんさんのおうち

日記です。たまに日記じゃないこともあります。

ArchLinuxARM(RPi)でDocker環境を建てる

ykm11.hatenablog.com の続きです.


公式wiki等では純粋にpacmanでdockerインストールするだけで動くようになるのですが, 僕の環境ではうまくいきませんでした.
試行錯誤した末にようやく動かせるところまでできたので, 同じような状況になった時のために残します.
動作不調の原因はおそらく焼いているimgファイルではないかと思います(先に結論を言うとモジュールのバージョンあげたら動きました).

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

Arch Linux — Docker-docs-ja 1.13.RC ドキュメント によると,

  • bridge-utils
  • device-mapper
  • iproute2
  • lxc
  • sqlite

が依存パッケージらしいので入れていきます.(Docker入れるときに必要なパッケージは自動でインストールされると思いますが念のため)
このとき device-mapper でconflictが起きた場合うまく行かない可能性が高いです.

Docker Install

依存パッケージのインストールが終わったらDockerを入れましょう.

$ pacman -S docker

これでdockerコマンドが使えるようになりました.
早速使ってみようと, docker ps を叩いてみたところdocker daemonが起動していなかったのでエラーが出ました.

$ systemctl start docker

f:id:ushiromiya3:20171015041857p:plain
デーモンの起動に失敗しました.
どうやら dockerd が原因でエラーが出ているようです.

f:id:ushiromiya3:20171015042135p:plain
Twitterの方で聞いてみたのですが, 見たことがないエラーらしく初心者の僕ではどうすることもできそうになかったので適当にlddコマンド叩いてみたら version 'DM_1_02_97' not found が出ました.
libについてはわかりませんが, version云々と言うことは使っているものが古い可能性があります.
mapperと書いてあるので, 上記の divice-mapper を最新(?)にしましょう.

pacman -S device-mapper --force

--force はconflictが起きた時の所謂奥の手らしいのであまり使わない方がいいそうです.
これで device-mapper の問題は解決したので, 再度

$ systemctl start docker

すると今度は glibc の version x_xx not found が出ました.


ということでglibcのバージョンをあげたいと思います.

$ pacman -S glibc

そして再挑戦...
f:id:ushiromiya3:20171015044003p:plain

エラーは出てますが, とりあえずdaemon起動に成功しました!(この写真では dockerd で直接起動させてます. systemctl で起動させましょう)

$ docker ps

f:id:ushiromiya3:20171015044235p:plain

ちゃんと動いていますね.
あとはOSブート時にdaemon自動起動するように

$ systemctl enable docker

するだけです.


Arch難しい...