docker 1.12.6のarm64用バイナリを以下のアドレスから公開しました。1.12.5からの変更はセキュリティ的な修正1点のみです。

http://docker.atbsd.com/builds/Linux/arm64/docker-1.12.6.tgz

このバイナリパッケージには以下のように7つのファイルが含まれています。

% tar tvzf docker-1.12.6.tgz
drwxr-xr-x root/root         0 2017-01-11 16:53 docker/
-rwxr-xr-x root/root   3699080 2017-01-11 16:53 docker/docker-containerd-shim
-rwxr-xr-x root/root   2989578 2017-01-11 16:53 docker/docker-proxy
-rwxr-xr-x root/root  10917304 2017-01-11 16:53 docker/docker-containerd
-rwxr-xr-x root/root  15036824 2017-01-11 16:53 docker/docker
-rwxr-xr-x root/root  10168376 2017-01-11 16:53 docker/docker-containerd-ctr
-rwxr-xr-x root/root  44562256 2017-01-11 16:53 docker/dockerd
-rwxr-xr-x root/root   8472616 2017-01-11 16:53 docker/docker-runc

この内容について簡単に見ておきましょう。

以前のdocker engineはdockerという単一バイナリにすべての機能を集めて、引数によりクライアント、サーバー、初期化プログラムなどのモードを切り替えて実行するのが特徴でした。しかし、docker 1.11.0以降はバイナリを分割するよう方針が変更されました。これはCoreOSグループによる批判とRocketのリリースが背景にあると思われます。

2016年4月13日にリリースされた1.11.0で分離されたバイナリは以下の4つです。

docker-containerd コンテナを管理する
docker-containerd-shim プロセスの親子関係を付け替える
docker-containerd-ctr docker-containerdの動作確認をおこなう
docker-runc コンテナを実行する

2016年7月28にリリースされた1.12.0ではさらに以下の2つが分離されました。

docker-proxy コンテナの外からアクセスできるようにするproxy
dockerddocker engineのシステムを管理する

こういった分割の結果、dockerというバイナリにはコマンドラインインターフェースなどの限られた機能のみが残っています。ファイルサイズを見るとシステムを管理する機能が集中しているdockerdよりdockerのほうが小さいことがわかります。

docker engineのクロス開発キットではすべてのバイナリをターゲットとなるアーキテクチャに合わせてコンパイル・インストールする必要があります。したがって、バイナリの数が増えるとそのぶん手間も増えます。弊社でクロス開発キットの作成を始めた当初はバイナリはdockerだけで楽だったのですが、まさかこんなことになるとは予想していませんでした。

2017年にリリースが予定されている1.13.0以降はさらにバイナリが増える予定です。弊社では公式リリース後、すみやかに公開できるよう対応作業をすすめています。