Docker 誕生から現在までの過程を俯瞰する 2 (2014/11～2015/6)

# 概要
Docker が今までどんな過程を経て成長してきたか俯瞰したかったため、Docker の誕生から現在までのリリースや出来事、関連ベンダー・プロジェクトの動きなどをまとめてみました。

* リリースの詳細は 0.7 以降について記載しています
* 関連ベンダー・プロジェクトについては書き出すときりがないため、個人的に重要と感じたネタのみ書いてます。


# 過程
[2014/11/4] Google が Google Container Engine(GKE) 発表
--------------------------------------------------------------------
Google Container Engine(GKE)は、Google Cloud Platform 上で Kubernetes を用いてコンテナの実行・管理を行えるサービス。アルファ版として公開された。

【参考リンク】

* http://www.publickey1.jp/blog/14/google_container_enginedockerkubernetes.html
* http://qiita.com/n0bisuke/items/d495813ff5939f0ee596
* http://internetcom.jp/webtech/20141105/google-launches-container-engine-with-docker.html

[2014/11/13] AWS が EC2 Container Service を発表
--------------------------------------------------------------------
AWS のイベント re:Invent 2014 で、コンテナ管理サービスである EC2 Container Service(ECS)が発表された。

【参考リンク】

* https://blog.docker.com/2014/11/docker-based-multi-container-applications-run-on-aws-cloud-with-introduction-of-the-ec2-container-service/
* http://www.publickey1.jp/blog/14/dockeramazon_ec2_container_serviceaws_reinvent_2014.html


[2014/11/18] Microsoft による Docker 関連の発表、デモ
--------------------------------------------------------------------
Windows 版の Docker CLI を発表。Linux ホスト上のコンテナを、Windows マシンから管理可能になった。また、MS のイベントである Connect(); で、Linux コンテナ上でASP.NET アプリケーションを実行するデモを実施。

【参考リンク】

* http://blogs.msdn.com/b/windowsazurej/archive/2014/12/08/blog-docker-cli-for-windows-clients.aspx
* http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications-in-linux-containers-with-docker.aspx
* http://www.publickey1.jp/blog/14/linuxnetdockervisual_studio.html

[2014/12/1] CoreOS 社が Rocket をリリース
--------------------------------------------------------------------
Rocket は、App Container(appc) というコンテナ仕様に従ったコンテナを実行するランタイム。Docker との意見の相違から生まれ、Docker 対抗という位置づけ。

【参考リンク】
* http://www.infoq.com/jp/news/2014/12/coreos-rocket
* http://gihyo.jp/admin/clip/01/linux_dt/201412/03
* http://deeeet.com/writing/2015/02/17/docker-bad-points/
* http://deeeet.com/writing/2015/03/12/rocket/

[2014/12/4] Docker Machine、Swarm、Compose の発表
--------------------------------------------------------------------
マルチコンテナ、マルチホストのオーケストレーションツールである Docker Machine、Swarm、Compose が発表された。

* Docker Machine  
  Dockerの実行環境(Docker Engine がインストールされたホスト)を自動構築する機能。例えば、ラップトップや、仮想マシン、パブリッククラウド上に、単一のコマンドでDocker環境を構築できる。
* Docker Swarm  
  Docker のクラスタリングサービス。Docker ホストのリソースプールを作成し、コンテナを適切なホストに配置する。また、Failover機能や、ホストのスケールアウト機能を持つ。
* Docker Compose  
  複数のコンテナで構成されるアプリを構築・配備する機能。

【参考リンク】

* https://blog.docker.com/2014/12/docker-announces-orchestration-for-multi-container-distributed-apps/
* https://blog.docker.com/2014/12/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/
* http://www.publickey1.jp/blog/14/dockerdocker_machinedocker_swarmdocker_compose.html


[2014/12/4] Docker Hub Enterprise の発表
--------------------------------------------------------------------
Docker Hub をユーザーの環境に配置できる Docker Hub Enterprise が発表。

【参考リンク】

* https://blog.docker.com/2014/12/docker-announces-docker-hub-enterprise/
* http://www.publickey1.jp/blog/14/docker_hub_enteprisedocker_hubawsibm.html

[2014/12/11] Docker 1.4.0 リリース
--------------------------------------------------------------------
バグ修正と安定性の向上が主な目的のリリースで、それまでに見つかっていたセキュリティ問題にも対処。同じセキュリティ問題を修正した 1.3.3 も同時にリリースされた。なお、docker create 時のボリュームのマウントに問題があり、修正版の 1.4.1 が 2014/12/17 にリリースされた。

【主な変更点】

* Storage Driver として overlayfs を追加(Experimental)
* Docker デーモンへのラベルの追加
* docker events コマンドでのフィルターの追加

【参考リンク】

* https://blog.docker.com/2014/12/advancing-docker-security-docker-1-4-0-and-1-3-3-releases/
* http://www.infoq.com/jp/news/2015/01/docker-1.4.0-1.3.3
* http://www.publickey1.jp/blog/14/windowsdocker.html
* http://www.publickey1.jp/blog/14/linuxnetdockervisual_studio.html

[2015/2/10] Docker 1.5 リリース
--------------------------------------------------------------------
新機能が多数追加されたのと、Docker イメージの仕様がドキュメントとして[公開された](https://github.com/docker/docker/blob/master/image/spec/v1.md)。

【主な変更点】

* IPv6 サポート  
  コンテナへIPv6アドレスの割り当てが可能になり、コンテナ間をIPv6で通信することができるようになった。
* Read-Only コンテナ  
  --read-only フラグにより、ファイルシステムが Read-Only になる。ボリュームの機能と組み合わせて、コンテナがファイルを書き込める場所を限定できる。
* Stats  
  docker stats コマンドにより、コンテナンのリソース(CPU、メモリ、Network I/Oなど）を取得可能になった。
* Dockerfile のファイル名の指定  
  docker build コマンドに渡す Dockerfile のファイル名を指定できるようになった。

【イメージ仕様】
[Docker Image Specification v1.0.0](https://github.com/docker/docker/blob/master/image/spec/v1.md)

【参考リンク】

* https://blog.docker.com/2015/02/docker-1-5-ipv6-support-read-only-containers-stats-named-dockerfiles-and-more/
* http://japan.zdnet.com/article/35060274/
* http://dev.classmethod.jp/server-side/docker-server-side/docker1-5/
* http://www.publickey1.jp/blog/15/docker_15ipv6docker.html

[2015/2/26] Docker Machine、Swarm、Compose が公開
--------------------------------------------------------------------
Docker のオーケストレーションツールである Docker Machine、Swarm、Compose が公開され、ダウンロード可能になった。

* Docker Machine  
  Docker 環境の自動構築ツール。ベータ版としてリリース。AWS EC2、Microsoft Azure、VMware vSphere など、多くのクラウドやHypervisorをサポート。
* Docker Swarm  
  Docker のクラスタリングツールで、複数のDocker Engine をプールして単一の仮想的なDocker Engine のように見せる。ベータ版としてリリース。
* Docker Compose  
  マルチコンテナ アプリの定義・配備ツール。買収した Fig がベース。正式版として公開。

【参考リンク】

* https://blog.docker.com/2015/02/orchestrating-docker-with-machine-swarm-and-compose/
* https://blog.docker.com/2015/02/announcing-docker-machine-beta/
* https://blog.docker.com/2015/02/scaling-docker-with-swarm/
* https://blog.docker.com/2015/02/announcing-docker-compose/
* http://www.publickey1.jp/blog/15/dockerdocker_machinedocker_swarmdocker_compose_1.html

[2015/3/4] SocketPlane 社の買収
--------------------------------------------------------------------
Docker ネイティブな SDN技術を開発していた SocketPlane 社を、Docker 社が買収。SocketPlane は Open vSwitch を用いて、複数の Docker ホストにまたがったコンテナ間で仮想ネットワークを構築するソフトウェア。

【参考リンク】

* http://www.businesswire.com/news/home/20150304005595/en/Docker-Acquires-SocketPlane-Drive-Open-Collaborative-Networking#.VauZuvntlBd
* http://aucouranton.com/2015/01/16/docker-virtual-networking-with-socketplane-io/
* https://blog.docker.com/2015/03/socketplane-excited-to-be-joining-docker-to-collaborate-with-networking-ecosystem/
* http://www.publickey1.jp/blog/15/dockersoftware-defined_networkingsocketplanedocker.html
* http://fstn.hateblo.jp/entry/2015/03/31/004319

[2015/3/9] Red Hat Enterprise Linux 7 Atomic Host のリリース
--------------------------------------------------------------------
Docker アプリの実行に最適化した軽量な OS である Red Hat Enterprise Linux 7 Atomic Host の正式版がリリース。

【参考リンク】

* http://www.redhat.com/en/about/press-releases/red-hat-launches-red-hat-enterprise-linux-7-atomic-host-advances-linux-containers-enterprise
* http://www.publickey1.jp/blog/15/7_atomic_host.html


[2015/3/12] Docker社が Kitematicを買収
--------------------------------------------------------------------
GUI で Docker の導入やコンテナの管理ができるソフトウェア Kitematic を開発していた Kitematic社を、Docker社が買収。この時点で、Kitematic は Mac にのみ対応。

【参考リンク】

* https://blog.docker.com/2015/03/kitematic-a-docker-gui-joins-the-docker-family/
* http://japan.zdnet.com/article/35061736/

[2015/4/8] Microsoft が Windows Server 2016のコンテナ関連機能を発表
--------------------------------------------------------------------
Hyper-V Container と Nano Server についての発表。

Windows Server 2016(次期 Windows Server)では、以下の2つのコンテナが提供される。

* Windows Server Container  
  Windows Server上で動作する通常のコンテナ
* Hyper-V Container  
  Hyper-V の技術を用いて、VMのように各コンテナが完全に隔離された状態で動作するコンテナ。大量にリソースを消費するコンテナが、他のコンテナの動作に影響を与える、といった問題を解決する。

また、Nano Server は、クラウドやコンテナでの利用に最適化した非常に小さなサイズの Windows Server のインストールオプション。通常の Windows Server と比べてファイルサイズは7%しか使わない(VHDでの比較)。

【参考リンク】

* http://blogs.technet.com/b/server-cloud/archive/2015/04/08/microsoft-announces-new-container-technologies-for-the-next-generation-cloud.aspx
* http://blogs.technet.com/b/windowsserver/archive/2015/04/08/microsoft-announces-nano-server-for-modern-apps-and-cloud.aspx
* http://cloud.watch.impress.co.jp/docs/special/20150519_702430.html
* http://www.publickey1.jp/blog/15/hyper-v_containerwindows_server.html
* http://www.itmedia.co.jp/news/articles/1504/09/news076.html


[2015/4/16] Docker 1.6 リリース
--------------------------------------------------------------------
Windows クライアントのサポートや、要望の多かった機能を実装したリリース。

【主な変更点】

* Windows 版の Docker クライアント  
  Windows から、Linux 上の Docker Engine を操作できる。
* コンテナとイメージへのラベル付  
  運用・管理目的などで、コンテナとイメージにユーザー定義のラベルを付けられるようにした機能。
* Logging Drivers  
  プラガブルなログ出力機構。コンテナ起動時に、ログの出力形式(JSON、syslogなど)を指定できる。
* Ulimits  
  これまでは、コンテナは Docker デーモンの ulimit 設定を引き継いでいたが、各コンテナで個別に設定できるようにした
* 新しい Registry API への対応  
  イメージを pull する際の性能や信頼性が向上した

などなど。

【参考リンク】

* https://blog.docker.com/2015/04/docker-release-1-6/
* http://www.publickey1.jp/blog/15/docker_16windowsdockerulimits.html
* http://qiita.com/takedakn/items/60cf57f7a92dae1a694e
* http://japan.zdnet.com/article/35063308/

[2015/4/16] Registry 2.0 リリース
--------------------------------------------------------------------
Docker イメージを配布するサーバーである Registry の 2.0 がリリース。それまで Python ベースだった Registry を Go言語で書き換えた。また、新しい Registry API を実装して Pull の性能が向上した。なお、GitHub上では [distribution](https://github.com/docker/distribution) という名称でソースが公開されている。

【参考リンク】

* https://blog.docker.com/2015/04/faster-and-better-image-distribution-with-registry-2-0-and-engine-1-6/
* http://japan.zdnet.com/article/35063308/
* http://qiita.com/takedakn/items/60cf57f7a92dae1a694e

[2015/4/16] Docker Machine, Swarm, Compose のアップデート
--------------------------------------------------------------------
Docker のオーケストレーション ツール群がアップデートされた。

* Docker Machine  
  バージョン 0.2。安定性と拡張性の向上にフォーカス。
* Docker Swarm  
  バージョン 0.2。新しいスケジューリングのストラテジー、サポートする Docker API の追加、プラガブルなクラスタドライバの機構を追加。
* Docker Compose  
  バージョン1.2。サービス間で設定を共有できるキーワード(extends)を追加

【参考リンク】

* https://blog.docker.com/2015/04/docker-release-1-6/
* https://blog.docker.com/2015/04/easily-configure-apps-for-multiple-environments-with-compose-1-2-and-much-more/
* http://japan.zdnet.com/article/35063308/
* http://qiita.com/takedakn/items/60cf57f7a92dae1a694e

[2015/6/16] Kitematic の Windows版がリリース(アルファ版)
--------------------------------------------------------------------
GUI で Docker を管理できる Kitematic の Windows版のアルファ版がリリース。

【参考リンク】

* https://blog.docker.com/2015/06/kitematic-windows-alpha/
* http://codezine.jp/article/detail/8788

[2015/6/22] Open Container Project の発足
--------------------------------------------------------------------
多数の主要ベンダーが参加し、コンテナのフォーマットとランタイムの仕様を定義する Open Container Project（OCP）が発足した。Linux Foundation の支援のもと、非営利なプロジェクトとして運営される。

* Docker は、コンテナフォーマットとランタイム(runc)を寄贈
* nsinit を含む libcontainer プロジェクトも寄贈される(runC の一部になる)
* CoreOS の appc のメンテなーが発足メンバーとして参加

【参考リンク】

* https://blog.docker.com/2015/06/open-container-project-foundation/
* http://www.infoq.com/jp/news/2015/06/open-container-project
* http://www.publickey1.jp/blog/15/open_container_project.html
* http://www.atmarkit.co.jp/ait/articles/1506/26/news097.html
* http://venturebeat.com/2015/06/22/docker-and-coreos-unite-to-start-the-open-container-project-and-standardize-runtime-image-format/

[2015/6/22] Docker 1.7 リリース
--------------------------------------------------------------------

【主な変更点】

* Networking (Experimental)  
  異なるホスト上のコンテナ間の通信が可能となる(SDN)。内部的には、ネットワーク周りを libnetwork というライブラリとして分割。買収した SocketPlane の技術がベース。
* Plugins (Experimental)  
  Docker Engine へのプラグイン機能の追加。ネットワークとボリュームのプラグインが利用可能になった。
* ZFS 対応  
  ZFS ストレージドライバの追加。イメージを ZFS に保存できる。

【参考リンク】

* https://blog.docker.com/2015/06/announcing-docker-1-7-multi-host-networking-plugins-and-orchestration-updates/
* http://osdn.jp/magazine/15/06/24/162500
* http://www.serverwatch.com/server-news/docker-1.7-debuts-with-experimental-sdn.html

[2015/6/22] Docker Machine, Swarm, Compose のアップデート
--------------------------------------------------------------------
Docker のオーケストレーション ツール群がアップデートされた。

* Docker Machine  
  バージョン 0.3。ホスト作成時にEngineとSwarmの設定を渡せるようになった。
* Docker Swarm  
  バージョン 0.3。Mesos のクラスタードライバ、Swarm マスターのマルチ構成化など。
* Docker Compose  
  バージョン1.3。全コンテナではなく変更があったコンテナのみ再作成する機能などが追加。