T1#open-source
Docker 公開 ── 5分間のトークがコンテナを普及させた
メタデータ
- 日付
- 年代
- 2010s
- Tier
- T1
- 参照年表
- クラウドコンピューティングの歴史
- 出典数
- 11
- 関連項目
- 01
- Tags
- #open-source
Docker が初めて公の場に姿を見せたのは 2013年3月15日、カリフォルニア州サンタクララで開かれた PyCon US 2013 の5分間のライトニングトークである。話したのは小さな PaaS 企業 dotCloud の Solomon Hykes で、題は「The future of Linux Containers」。最初のタグ付きリリース v0.1.0 は2013年3月26日に続いた。7か月後に dotCloud は社名を Docker, Inc. に改め、Docker 1.0 は2014年6月9日に出た。
Docker がコンテナを発明したわけではない。頼った Linux カーネルの機能は、10年かけて積み上がってきたものだった。Docker がしたのはそれを使いやすくすることで、結局それこそが決定的な部分だった。
PyCon の5分間
PyCon US 2013 の本会議は3月15日から17日までで、その前に2日間のチュートリアル、後に4日間のスプリントが付いていた。Hykes の枠はライトニングトークで、収録日は3月15日(金)。PyVideo に残る録画の説明は前提をこう書く。dotCloud がどうやってコンテナを動かしているのかに関心を持つ人は多かったが、仕組みが複雑すぎて公に語れなかった ── Docker ができるまでは。
1週間後の3月21日、Docker のブログは同じ題で録画を載せ、Hykes が「shows docker to the public for the first time at PyCon 2013」と一行で紹介した。
つまり Docker は、dotCloud が自社ですでにやっていたこと ── 顧客のアプリケーションを Linux コンテナで動かすこと ── を外に開く道具として始まった。
Docker の土台
Linux のコンテナは仮想マシンではない。カーネルが隔離し制限をかけた普通のプロセスで、ホスト上の他のすべてと1つのカーネルを共有する。仕事の大半を担う2つのカーネル機能は、どちらも Docker より古い。
| 機能 | 役割 | 起源 |
|---|---|---|
| namespaces | マウント、プロセス ID、ネットワークなどの見え方をプロセスごとに分ける | 最初の namespace(マウント)は2002年の Linux 2.4.19 |
| cgroups(コントロールグループ) | CPU・メモリ・I/O の使用を制限し計測する | 2006年に Google で Paul Menage と Rohit Seth が process containers として着手。2008年1月の Linux 2.6.24 で本流入り |
| LXC | 上の2つからコンテナを作るユーザー空間のツール | 2014年まで Docker の実行層として使われた |
さらにさかのぼれば、1つのカーネルを共有する隔離環境は FreeBSD の jails や Solaris Zones にまで続く。用語集の コンテナ を参照。初期の Docker はカーネルを直接は呼ばず、LXC を操作していた。
Docker が加えたのは作業の流れである。アプリケーションと、それが必要とするものすべてをファイルに書き、イメージ としてビルドし、レジストリに送り、どの Linux マシンにも取ってきて同じように動かす。
道具から会社へ
| 日付 | 出来事 |
|---|---|
| 2013年3月15日 | PyCon US(サンタクララ)でライトニングトーク |
| 2013年3月26日 | GitHub で v0.1.0 をタグ付け |
| 2013年10月29日 | dotCloud が Docker, Inc. に改称 |
| 2014年3月10日 | Docker 0.9。既定の実行層を LXC から自前の libcontainer へ |
| 2014年6月9日 | Docker 1.0 と Docker Hub。サンフランシスコの第1回 DockerCon |
2013年10月29日に dotCloud が Docker, Inc. になったとき、InfoQ は CEO の Ben Golub が挙げた理由を伝えている。コンテナ化は次世代のコンピューティングを可能にする最も重要な要素の一つになりうるし、Docker には PaaS 事業より大きな影響力がある、というものだ。公開から7か月の時点で同社が示した数字は、コンテナのダウンロード14万回以上、GitHub のスター6,700以上、コントリビューター200人近く(うち92%が社外)だった。
2014年3月10日、Hykes は Docker 0.9 を発表し、LXC を選択制にした。新しい既定は Go で書かれたライブラリ libcontainer で、カーネルの namespaces や cgroups などを直接呼ぶ。同じリリースは実行ドライバーのインターフェースも導入し、Hykes はそれで扱いうる他の隔離手段として OpenVZ、systemd-nspawn、libvirt-lxc、qemu/kvm、BSD の jails、Solaris Zones、素の chroot を挙げた。Docker は自らを隔離の仕組みそのものではなく、その上に載る層として位置づけていた。Docker 1.0 は2014年6月9日、第1回 DockerCon に合わせて出た。LWN は、イメージを集める中央レジストリ Docker Hub の開始とあわせてこれを報じている。
何を引き起こしたか
翌日の2014年6月10日、DockerCon 2日目の基調講演で Google の Eric Brewer は、コンテナを多数の機械にまたがって動かすオープンソースのシステム Kubernetes を発表した。同じ日の Google のブログ記事は、Google ではあらゆるものが Linux コンテナで動いており、毎週20億を超えるコンテナを起動していると書いている。
Amazon も2014年11月に続いた。AWS Lambda を発表した re:Invent の同じ基調講演で、Docker コンテナ向けの EC2 Container Service が発表されている。5分間のトークから20か月足らずで、クラウド市場を開いた2社 ── S3 の Amazon と App Engine の Google ── がどちらも、Docker コンテナを軸にしたサービスを作っていた。
カーネル側の物語は Linux から始まる。前後の流れは クラウドコンピューティングの年表 にある。
よくある質問
- Docker はいつ、誰が公開したのですか。
- 2013年3月15日、PaaS 企業 dotCloud の Solomon Hykes が、サンタクララで開かれた PyCon US 2013 の5分間のライトニングトーク「The future of Linux Containers」で初めて公に示しました。最初のタグ付きリリース v0.1.0 は同年3月26日です。
- Docker がコンテナを発明したのですか。
- していません。資源制限を担う cgroups は2008年1月の Linux 2.6.24 で本流に入り、隔離を担う namespaces は2002年の 2.4.19 から段階的に足されたものです。初期の Docker はそれらを LXC 経由で使っていました。Docker の寄与は、イメージのビルドと配布と扱いやすい CLI でそれらを一般の開発者に届けた点にあります。
- Docker 1.0 はいつ出たのですか。
- 2014年6月9日です。サンフランシスコで開かれた第1回 DockerCon に合わせて公開され、イメージの中央レジストリ Docker Hub も同時に始まりました。
- dotCloud はいつ Docker, Inc. になったのですか。
- 2013年10月29日です。CEO の Ben Golub は、Docker には元の PaaS 事業より大きな影響力があると判断したと説明しました。
出典
PyCon 2013 で Docker を初めて公開したという Docker 自身の記述
LXC を選択制にし libcontainer を既定にしたこと
二次資料dotCloud Renamed Docker — InfoQ, October 29, 2013
改称の日付、Ben Golub の説明、公開7か月時点の数字
二次資料DockerCon 2014 — Josh Berkus, LWN.net, June 18, 2014
Docker 1.0 の日付と Docker Hub の開始
最終更新: