docker
kubernetes
コンテナ
Moby
containerd

コンテナ関連コミュニティの動向 (2017年6月・7月)

More than 1 year has passed since last update.

気になっているニュースを適当に書き連ねてみた.

Docker関連

Docker 17.06 (6/28)

https://blog.docker.com/2017/06/announcing-docker-17-06-community-edition-ce/

Docker 17.03以来,2番目のquarterly release (新スキームでの安定版).次のquaterly releaseは17.09.

17.05から,あまり大きい変更はないが,Multi-stage Dockerfileをサポートするquarterly releaseとしては初.

また,このバージョンからは,Moby Projectのリポジトリ (https://github.com/moby/moby) ではなく,Docker社のリポジトリ (https://github.com/docker/docker-ce) のソースを用いてビルドされるようになった.

両リポジトリの内容はほぼ同じ.Moby Projectのリポジトリへの変更は,Docker社員が随時Docker社のリポジトリにcherry-pickしてくれる.

Docker 17.07 (8月になっても未リリース..)

https://github.com/docker/docker-ce/releases/tag/v17.07.0-ce-rc1

  • ~/.docker/config.json にプロキシの設定を書いておくと,docker build時やdocker run時に使われるようになった. https://github.com/docker/cli/pull/93
  • docker ps 時のコンテナオブジェクトに対するロックが無くなった.劇的に軽くなったように感じられる.https://github.com/moby/moby/pull/31273
  • docker build時にデーモンに送信されるコンテキストを,2回目以降は差分のみ転送できるようになった. https://github.com/moby/moby/pull/32677
  • "Linux containers on Windows" (LCOW) のコードも部分的に入り始めたが,まだ動かない.

Moby Project関連

※ Dockerの上流となっているcommunity-drivenなプロジェクト. 大まかには,Docker : Moby Project ≒ RHEL : Fedora と考えてよい.

Moby Core (7/12)

https://forums.mobyproject.org/t/topic-find-a-good-and-non-confusing-home-for-the-remaining-monolith/37/54

4月,github.com/docker/dockerリポジトリが github.com/moby/moby にリネームされたが,近々 更に github.com/moby/moby-core にリネームされる予定.
従来のdockerdとしての"moby" (→Moby Core)と,Mobyコンポーネントを組み合わせるツールとしての"moby" (github.com/moby/tool)とが紛らわしいための措置.

/usr/bin/dockerdのバイナリも,/usr/bin/moby-core-serverのような名前になる見込み.
他にも,Dockerfileなど名前に"docker"とつくものは全て,Moby Coreからは順次削除される見込み. https://forums.mobyproject.org/t/topic-find-a-good-and-non-confusing-home-for-the-remaining-monolith/37/66

BuildKit (6/24)

https://github.com/moby/buildkit

docker build を再実装する構想.

  • low-levelなフォーマットとして「LLB」が提供される.LLBは人間が直接読み書きするものではない.
  • LLBの命令間の依存性は,DAGとして表現される.並行性の抽出などによる高速化が可能となる.
  • 従来のDockerfileは,LLBに変換されて実行される.今後,Dockerfile以外の上位言語も出てくるかもしれない?

OCI関連

Image Spec & Runtime Spec v1.0発表 (7/19)

https://www.opencontainers.org/announcement/2017/07/19/open-container-initiative-oci-releases-v1-0-of-container-standards
https://blog.docker.com/2017/07/oci-release-of-v1-0-runtime-and-image-format-specifications/

2年かかってようやく,イメージ仕様・ランタイム仕様の標準化がなされた.

今後は,OCI仕様準拠実装の認定などが,OCIの主なミッションとなりそう.https://github.com/opencontainers/certification

イメージ配布プロトコル(Docker Registry HTTP APIがde facto standard)については,今のところOCIのスコープ外であるが,今後OCI入りする可能性もあり.

containerd関連

Docker・Kubernetesなどで共通で使われる予定の,次世代ランタイム.

image

alphaステージに到達 (7/20)

https://github.com/containerd/containerd/releases/tag/v1.0.0-alpha1

実装予定の機能はほぼ実装されたが,まだWindows対応などの課題あり.

Swarmkit関連

CNI対応のPR (7/6)

https://github.com/docker/swarmkit/pull/2299

libnetwork (CNM)に加え,CNIもSwarmkitで使えるようになる.
今後はDockerでもKubernetesでも,CNIが共通のフレームワークとなっていきそう.

Kubernetes関連

Kubernetes 1.7リリース (6/29)

http://blog.kubernetes.io/2017/06/kubernetes-1.7-security-hardening-stateful-application-extensibility-updates.html

StatefulSetがベータになった.

参考: http://qiita.com/tkusumi/items/817cf85917efd24c7a4f

Azure関連

Azure Container Instances (7/26)

https://azure.microsoft.com/en-us/blog/announcing-azure-container-instances/

いちいちVMのインスタンスを立ち上げずに,直接コンテナを起動できるサービス.
Kubernetesでもオーケストレートできる. https://github.com/azure/aci-connector-k8s
ようやくCaaSらしいCaaSが出てきた印象.

Draft (5/31)

https://azure.microsoft.com/en-us/blog/streamlining-kubernetes-development-with-draft/

Dockerfileやchartをいちいち書かなくても,簡単にサービスをKubernetesにデプロイできるツール

Oracle関連

Smith, Crashcard, & Railcar (6/29)

https://blogs.oracle.com/developers/three-new-open-source-container-utilities

コンテナ関連のOSSが3つ同時に発表された.

  • Smith: 「microcontainer」をビルドするツール.イメージはread-only,shell無しが基本.軽くてセキュア.(https://blogs.oracle.com/developers/the-microcontainer-manifesto)
  • Crashcard: 「microcontainer」用のデバッガ.microcontainer内にshellをインストールすることなく,tcpdump, straceやgdbなどを実行できる.
  • Railcar: Rustで書かれたOCIランタイム実装.Rustで書かれているので,GCのオーバヘッドや,namespace関連の問題が無い.

containerd, DockerのSolaris対応

Docker 1.13でSolarisサポートが入りかけていたが,その後動きがなかった

最近,作業が再開された模様.
https://github.com/containerd/containerd/pull/1224