Edited at

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

More than 3 years have passed since last update.


概要

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


  • リリースの詳細は 0.7 以降について記載しています

  • 関連ベンダー・プロジェクトについては書き出すときりがないため、個人的に重要と感じたネタのみ書いてます。


過程


[2014/11/4] Google が Google Container Engine(GKE) 発表

Google Container Engine(GKE)は、Google Cloud Platform 上で Kubernetes を用いてコンテナの実行・管理を行えるサービス。アルファ版として公開された。

【参考リンク】


[2014/11/13] AWS が EC2 Container Service を発表

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

【参考リンク】


[2014/11/18] Microsoft による Docker 関連の発表、デモ

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

【参考リンク】


[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

    複数のコンテナで構成されるアプリを構築・配備する機能。

【参考リンク】


[2014/12/4] Docker Hub Enterprise の発表

Docker Hub をユーザーの環境に配置できる Docker Hub Enterprise が発表。

【参考リンク】


[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 コマンドでのフィルターの追加

【参考リンク】


[2015/2/10] Docker 1.5 リリース

新機能が多数追加されたのと、Docker イメージの仕様がドキュメントとして公開された

【主な変更点】


  • 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

【参考リンク】


[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 がベース。正式版として公開。

【参考リンク】


[2015/3/4] SocketPlane 社の買収

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

【参考リンク】


[2015/3/9] Red Hat Enterprise Linux 7 Atomic Host のリリース

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

【参考リンク】


[2015/3/12] Docker社が Kitematicを買収

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

【参考リンク】


[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での比較)。

【参考リンク】


[2015/4/16] Docker 1.6 リリース

Windows クライアントのサポートや、要望の多かった機能を実装したリリース。

【主な変更点】


  • Windows 版の Docker クライアント

    Windows から、Linux 上の Docker Engine を操作できる。

  • コンテナとイメージへのラベル付

    運用・管理目的などで、コンテナとイメージにユーザー定義のラベルを付けられるようにした機能。

  • Logging Drivers

    プラガブルなログ出力機構。コンテナ起動時に、ログの出力形式(JSON、syslogなど)を指定できる。

  • Ulimits

    これまでは、コンテナは Docker デーモンの ulimit 設定を引き継いでいたが、各コンテナで個別に設定できるようにした

  • 新しい Registry API への対応

    イメージを pull する際の性能や信頼性が向上した

などなど。

【参考リンク】


[2015/4/16] Registry 2.0 リリース

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

【参考リンク】


[2015/4/16] Docker Machine, Swarm, Compose のアップデート

Docker のオーケストレーション ツール群がアップデートされた。


  • Docker Machine

    バージョン 0.2。安定性と拡張性の向上にフォーカス。

  • Docker Swarm

    バージョン 0.2。新しいスケジューリングのストラテジー、サポートする Docker API の追加、プラガブルなクラスタドライバの機構を追加。

  • Docker Compose

    バージョン1.2。サービス間で設定を共有できるキーワード(extends)を追加

【参考リンク】


[2015/6/16] Kitematic の Windows版がリリース(アルファ版)

GUI で Docker を管理できる Kitematic の Windows版のアルファ版がリリース。

【参考リンク】


[2015/6/22] Open Container Project の発足

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


  • Docker は、コンテナフォーマットとランタイム(runc)を寄贈

  • nsinit を含む libcontainer プロジェクトも寄贈される(runC の一部になる)

  • CoreOS の appc のメンテなーが発足メンバーとして参加

【参考リンク】


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

【主な変更点】


  • Networking (Experimental)

    異なるホスト上のコンテナ間の通信が可能となる(SDN)。内部的には、ネットワーク周りを libnetwork というライブラリとして分割。買収した SocketPlane の技術がベース。

  • Plugins (Experimental)

    Docker Engine へのプラグイン機能の追加。ネットワークとボリュームのプラグインが利用可能になった。

  • ZFS 対応

    ZFS ストレージドライバの追加。イメージを ZFS に保存できる。

【参考リンク】


[2015/6/22] Docker Machine, Swarm, Compose のアップデート

Docker のオーケストレーション ツール群がアップデートされた。


  • Docker Machine

    バージョン 0.3。ホスト作成時にEngineとSwarmの設定を渡せるようになった。

  • Docker Swarm

    バージョン 0.3。Mesos のクラスタードライバ、Swarm マスターのマルチ構成化など。

  • Docker Compose

    バージョン1.3。全コンテナではなく変更があったコンテナのみ再作成する機能などが追加。