Raspberry Pi用dockerの構築
1. ラズパイ用のdocker
これでラズパイ用のdocker構築シリーズとしては3本目になります。最後がdockerについてです。
docker
は、Dockercon17で発表されたように docker/dockerからmoby/mobyにリポジトリも移行しています。この移行後のmoby/moby
でもラズパイはサポートされていますので、この環境での構築方法のメモ書きとなります。
Docker参照ドキュメントとして、Work with a development container
2. moby/mobyをクローン
最初にmoby/mobyをクローンします。
git clone https://github.com/moby/moby.git
3. dockerのビルド
docker
を作成するには、クローンしたディレクトリにcd
して、そのままmake
を実行します。
cd moby
make
ラズパイで実行して約6分ほどでしたが、色々とキャッシュされていて早かったのかも知れません。
続けて、できあがったバイナリをインストールします。ビルドと同様にクローンしたmoby
ディレクトリで以下を実行します。
make install
既定値では、/usr/local/bin
ディレクトリに以下のコマンドがインストールされます。
-rwxr-xr-x 1 root root 17121380 Apr 23 22:19 docker
-rwxr-xr-x 1 root root 35243444 Apr 23 22:20 dockerd
-rwxr-xr-x 1 root root 6068608 Apr 23 22:20 docker-runc
-rwxr-xr-x 1 root root 7822060 Apr 23 22:20 docker-containerd
-rwxr-xr-x 1 root root 7330636 Apr 23 22:20 docker-containerd-ctr
-rwxr-xr-x 1 root root 2506768 Apr 23 22:20 docker-containerd-shim
-rwxr-xr-x 1 root root 2236867 Apr 23 22:20 docker-proxy
-rwxr-xr-x 1 root root 400064 Apr 23 22:20 docker-init
4. dockerの実行
/usr/local/bin
にあるdocker
コマンドを実行します。
# docker version
Client:
Version: 17.06.0-dev
API version: 1.30
Go version: go1.7.5
Git commit: 83ee902
Built: Sun Apr 23 13:01:10 2017
OS/Arch: linux/arm
Server:
Version: 17.06.0-dev
API version: 1.30 (minimum version 1.12)
Go version: go1.7.5
Git commit: 83ee902
Built: Sun Apr 23 13:01:10 2017
OS/Arch: linux/arm
Experimental: false
docker
のバージョンが17.06.0-dev
でAPIバージョンも1.30
になっています。
ちなみに、現在docker公式で配布されているバージョンは、以下となっています。
# docker version
Client:
Version: 17.04.0-ce
API version: 1.28
Go version: go1.7.5
Git commit: 4845c56
Built: Mon Apr 3 18:22:23 2017
OS/Arch: linux/arm
Server:
Version: 17.04.0-ce
API version: 1.28 (minimum version 1.12)
Go version: go1.7.5
Git commit: 4845c56
Built: Mon Apr 3 18:22:23 2017
OS/Arch: linux/arm
Experimental: false
5.システムの設定
docker公式で配布されているdocker-engine
の場合、/usr/bin
ディレクトリにインストールされていますので、既にdocker-engine
をインストールしている場合には、思い切って削除するかパスで細工するなりしておきましょう。
docker-engine
では、systemd対応して/etc/systemd/system/multi-user.target.wants/docker.service
が使用されています。このdocker.service
ファイルは、/etc/default/docker
ファイルに対応していませんので、ExecStart=
の行を直接編集しています。
## ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/local/bin/dockerd -H fd://
編集後はsystemctl daemon-reload
するか、システムを再起動するかしておきます。
ちなみに、上記のdocker version
例では、/usr/local/bin/dockerd
をビルドした新しいものにしているためにServer
のバージョンも17.06.0-dev
となっています。
とりあえずは、以上となります。お楽しみいただけましたでしょうか。