気になっているニュースを適当に書き連ねてみた.
DockerCon (4/17-20)
技術的な話題:
- Moby Project (Docker : Moby ≒ RHEL : Fedora)
- Linuxkit (コンテナ用Linuxディストリビューション.オプションでokernel(nested kernelのようなもの)も使える.)
- Multi-stage build (Docker 17.05の新機能.Dockerfileにビルドコンテキスト(FROM行)を複数記述し,コンテキスト間でファイルを転送できる.)
など.
商用系の話題:
- VISAやMetLifeでの商用導入事例
- OracleのDocker Storeでの販売開始
- レガシーアプリをコンテナ化するDocker社の事業
など.
https://github.com/docker/docker が https://github.com/moby/moby にリネームされたため,色々な誤解が広まっているが:
- Dockerの製品名はDockerのまま
-
docker
コマンドもdocker
コマンドのまま (moby
コマンドは全然関係ない開発者向けツール) -
Dockerfile
もDockerfile
のまま - CLIはMobyから除外され,Docker社が単独でmaintainする"product"となったものの,プロプラにはなっていない ( https://github.com/docker/cli )
詳しくは https://www.slideshare.net/AkihiroSuda/moby-project にまとめてみた.
Docker・Moby 新API
Docker daemonは,単一のRESTサービスから,複数のgRPCサービスへと分割される.
各gRPCサービスは,それ自体さえもがcontainerd上のコンテナとして動作する.
従来のREST APIをエミュレートするレイヤも用意されるので,既存のアプリケーションを書き直す必要はない.
ただ,互換性に関する問題が全く生じないとは言えないかも知れない.
Moby 新フォーラム
プロジェクトの方向性に関する議論は,githubからDiscourseに移った.
また,定例ミーティングが,毎日午前1時(JST)に,Docker Community Slackの#moby-project
チャネルで開かれるようになった.
誰でも参加できるが,Docker社以外の人はあまり参加していない?
Buildkit構想
docker build
を再実装する構想.
- low-levelなフォーマットとして「LLB」が提供される.LLBは人間が直接読み書きするものではない.
- LLBの命令間の依存性は,DAGとして表現される.並行性の抽出などによる高速化が可能となる.
- 従来のDockerfileは,LLBに変換されて実行される.今後,Dockerfile以外の上位言語も出てくるかもしれない?
OCI
runC, runtime spec, image specのいずれも,近いうちに1.0がリリースされそう.
- https://github.com/opencontainers/runtime-spec/issues/726
- https://github.com/opencontainers/image-spec/issues/615
ただ,x86_64 Linux以外のプラットフォームへの対応について,最終確認にもう少し時間がかかるかもしれない.
なお,今のところ,イメージ配布プロトコルはOCIのスコープ外となっているが,標準化へ向けての試みもある.
https://github.com/cyphar/parcel
CRI (Container Runtime Interface; Kubernetesの共通ランタイム仕様)
containerdがrktと同時(3/29)にCNCFに寄贈された.
また,4月中旬,Googleを中心として CRI-containerd プロジェクトが発足した.
CRI-containerdを用いることで,containerdをCRI準拠ランタイムとして用いることができる.
主要なCRI準拠ランタイムは,いずれもKubernetes Incubator下で開発されている.
(図中に示していないCRIランタイムとしては fraktiやdockershimもある)
CRI-Oとcontainerdとのスコープは殆ど重なっているが,違いとしては
- CRI-O が直接CRIを実装しているのに対し,containerdはCRIを実装していない.別途CRI-containerdを要する.
- CRI-O は Dockerからフォークしたライブラリ(
containers/image
,containers/storage
) を用いているのに対し,containerdはほぼスクラッチから実装している.そのため,containerdのほうが拡張性が高い.Go 1.8のプラグインにも対応している.
CNI (Container Network Interface) のCNCF入り (5/23)
CSI (Container Storage Interface)
Mesosphere関係者が中心となって提案している,コンテナ向け永続ストレージの仕様.
まだ実装には至っていない模様.
Make containers kernel objects
namespace・cgroupsより高級なシステムコールをカーネルに追加する提案.
fd = container_create(name, flags)
, pid = fork_into_container(fd)
など.
OCI runtime specがあるので,システムコールでしなくていいのでは,という意見が強そう.
Longhorn
Rancher Labsが開発したコンテナ向け分散iSCSIストレージ.
DockerConにてデモが展示されていた.
命名は,DockerCon開催地のテキサスにかけているのだと思われる.
https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AD%E3%82%B5%E3%82%B9%E3%83%AD%E3%83%B3%E3%82%B0%E3%83%9B%E3%83%BC%E3%83%B3
MicrosoftのDeis買収 (4/10)
Helm目的?
雑多 (4月以前の話)
-
Red Hatが,OpenCompose を立ち上げた.Docker Composeに類似したYAMLファイルで,Kubernetesのリソースを定義できる.Kompose と似ているが,Komposeと異なり,Docker Composeとはやや異なる独自フォーマットを採用している.
-
Linuxのxfsがreflinkをサポートした.コンテナのスナップショットドライバなどに使えるかも知れない.