コンテナ関連コミュニティの動向 (2017年末・2018年1月)


<summary>
過去の記事
<details>
2017年10月・11月・12月号 https://qiita.com/AkihiroSuda/items/de849b0428545baf1e55
2017年8月・9月号 https://qiita.com/AkihiroSuda/items/f2faffe401a0f2dd207d
2017年6月・7月号 https://qiita.com/AkihiroSuda/items/dc60347f1ad79a747fa2
2017年4月・5月号 http://qiita.com/AkihiroSuda/items/e4785014c6c50496f11b
2017年3月号 http://qiita.com/AkihiroSuda/items/746328a8ee59301807b6
Docker 1.13号 http://qiita.com/AkihiroSuda/items/d762b8cdc1d704f8efdf
Docker 1.12号 http://qiita.com/AkihiroSuda/items/ba3e118389e0a550c000
</details>
</summary>


## Kubernetes

### Kubernetes 1.9

http://blog.kubernetes.io/2017/12/kubernetes-19-workloads-expanded-ecosystem.html

Workload API (GA), Windows対応 (beta)，CSI対応 (alpha) など

### Kubernetes対応版Dockerの公開

https://www.docker.com/kubernetes

今のところ，Docker EE, Docker CE for Mac, Docker CE for Windowsのみに対応しており，Docker CE for Linuxでは使えない．


### CRI-containerd が containerd本体に合流

https://github.com/containerd/containerd/issues/1942

Dockerに依存しないCRIランタイムの1つであるCRI-containerdは，Kubernetes Incubatorとして，CNCF傘下のcontainerdとは別個に開発が進められてきたが，containerd本体に合流した．
両プロジェクトの開発者の距離が一層近づいた気がする．

### Red HatによるCoreOS買収 ($250M)

https://www.redhat.com/en/about/press-releases/red-hat-acquire-coreos-expanding-its-kubernetes-and-containers-leadership
https://www.forbes.com/sites/janakirammsv/2018/01/30/red-hat-acquires-coreos-for-250-million/

Kubernetesの33個のSIG中，15個についてRed Hatがleadまたはco-leadとのこと．

### Cisco Container Platform 発表


https://newsroom.cisco.com/press-release-content?type=webcontent&articleId=1908366

HyperFlexなどのCisco製品群やGCPとの連携が意識されている．
ネットワークはContiv．

## OCI

### Distribution Specプロジェクト立ち上げ

https://github.com/opencontainers/tob/pull/35

OCI Image Specでは，コンテナイメージを構成するtar layerやJSONのblobの標準仕様を定めているが，イメージ配信プロトコルについては，従来は敢えてスコープ外としてきた．

しかしながら，[7月のOCI Image Spec v1.0.0](https://qiita.com/AkihiroSuda/items/dc60347f1ad79a747fa2)発表後，イメージ配信プロトコルの標準化の議論が再度盛り上がった．

SUSEやHuaweiによる新しいプロトコルの提案もなされたものの，結局，現在de facto standardであるDocker Registry HTTP API v2.0をOCI Distribution Specとして標準化することが，Docker社・Red Hat社を中心としてTOBに提案された．

間もなく正式にプロジェクト発足の見込み．


## その他

### Eliot (IoT向けコンテナオーケストレータ)

https://medium.com/devopslinks/announcing-eliot-container-platform-for-iot-devices-ad071e1917fd
https://github.com/ernoaapa/eliot

mDNSを使って簡単にクラスタを構成できる．
containerdやLinuxKitなど，Moby関連の技術が活用されている．

### `SECCOMP_RET_USER_NOTIF`

https://patchwork.kernel.org/patch/10199295/
https://www.youtube.com/watch?v=Lg3LU_oM-AU

seccompを使って，特定のシステムコールをユーザランドでhookする仕組み．
ユースケースとしては，コンテナ内での `init_module(2)` や `mknod(2)` の安全なサポートが想定されている．

`SECCOMP_RET_TRACE` に似ているが， `ptrace(2)` を使わないので，`ptrace(2)` を使う他のソフトウェアに影響を及ぼさない．

是非mainlineにマージされて欲しい．

### BuildKit (次世代 `docker build` )

https://github.com/moby/buildkit/pull/267

スケジューラが大きく書き直され，コンテナイメージのビルドに限らず，汎用的にDAGを実行可能となった．
ただし，スケジューラ自体のユニットテストの簡便化が目的であり，Apache Sparkの類を目指しているわけではない．

分散実行機能の実装も目指しているが，ワーカ間のキャッシュの転送などでまだ課題がある．

### rootless containers (自分の取り組み)

root権限が無くてもrunc, containerd, BuildKitを一通り動くようにしてみた．
将来的にはKubernetesやDockerもroot権限無しで動くようにしたい．
hostからnetnsを分離する場合，vethの代わりにtapでユーザランドでパケット処理する必要があるなど，性能面でのオーバヘッドは大きい．
LXCみたいにSUIDビットつきバイナリを利用するなど，多少の妥協は必要そう

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">Building <a href="https://twitter.com/hashtag/Docker?src=hash&amp;ref_src=twsrc%5Etfw">#Docker</a> container images without root privileges, using <a href="https://twitter.com/hashtag/BuildKit?src=hash&amp;ref_src=twsrc%5Etfw">#BuildKit</a><a href="https://t.co/mMVPZQqtmd">https://t.co/mMVPZQqtmd</a> <a href="https://t.co/KjpUvb61x4">pic.twitter.com/KjpUvb61x4</a></p>&mdash; Akihiro Suda (@_AkihiroSuda_) <a href="https://twitter.com/_AkihiroSuda_/status/955698849560997888?ref_src=twsrc%5Etfw">2018年1月23日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/containerd?src=hash&amp;ref_src=twsrc%5Etfw">#containerd</a> &amp; <a href="https://twitter.com/hashtag/runc?src=hash&amp;ref_src=twsrc%5Etfw">#runc</a> without root privilege, finally<a href="https://t.co/v3EdAR5fYK">https://t.co/v3EdAR5fYK</a> <a href="https://t.co/9SqAKVxaSX">pic.twitter.com/9SqAKVxaSX</a></p>&mdash; Akihiro Suda (@_AkihiroSuda_) <a href="https://twitter.com/_AkihiroSuda_/status/953231819008180224?ref_src=twsrc%5Etfw">2018年1月16日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>