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以降はさらにバイナリが増える予定です。弊社では公式リリース後、すみやかに公開できるよう対応作業をすすめています。