Docker公式ブログに書かれた「開発者が知っておくべき Docker、Docker Engine、Kubernetes v1.20」について

Docker (Moby) logo画像

Docker 公式ブログに「What developers need to know about Docker, Docker Engine, and Kubernetes v1.20 という投稿があり、何が書かれているのか要点を日本語でまとめました。

書かれているポイントは「Kubernetes で Docker が非推奨ではなく、これまで通り使い続けられる」であり「Docker イメージの話と、ランタイムの話は別」との内容です。

今回のDockerのブログ投稿を捕捉しますと、Kubernetes における docker-shim の話と、 Docker イメージの扱いは別だ、という内容でもあります。つまり、前提として「Docker Engineとcontainerd、Dockerコンテナとイメージの話」も分けて考えたり議論する必要があります。

Docker エンジンを構成する要素の1つが continerd

また、Cloud Native Refernce Architecture において、kubernetesとcontainerd(およびDocker)がどの位置にあるかの理解も必要です。

以下は、例によってブログに書かれている内容を共有します。なお、本文中の括弧内は、私が追加した説明です。

概要

The net/net is support for your container images built with Docker tools is not being deprecated and will still work as before.
(太字強調は原文通り)

  • 「要点:要点は、Docker ツールで構築するコンテナイメージのサポートは非推奨になはならず、これまで通り動作しつづけること。」
  • Kubernetes の最新版 Kubernetes v1.20.0-rc.0 が利用できるようになった
  • Kubernetes プロジェクトは来年リリースされるであろうリリースで、 Docker Engine サポートの depricated(日本語では「非推奨」や「廃止」と翻訳されることがある)を計画している(Docker Engine のサポートの話であり、Docker イメージに対するサポートの話ではない)

Docker と Kubernetes にどのような影響があるのか?

Docker と containerd(「コンテナ・ディー」と発音)

  • Docker を使っているのであれば、containerd も既に使用中であり、containerd 上で Docker の利用環境が整っている
  • プロダクション環境であれば、Kubernetes のような最小のコンテナ実行環境として(containerd などの)lightweight な(ライトウェイト=小さくて小回りが利く、の意味での)ランタイムが便利であり、おそらく Docker の開発作業が(プロダクションでは)不要だろう

containerd の成り立ち・経緯

  • containerd プロジェクトは、2016 年、Docker、Google、IBM と発足(関連
  • (Docker サイドの主張としては)docker-shim およびランタイムとしての Docker Engine の非推奨が意味するのは、Kubernetes 上に最新のランタイムを提供するという、長期的な目標の達成を意味する
  • contaired は 2017 年に CNCF に寄贈 され、Kubernetes のインターフェースとしての containerd CRI プロジェクト を取り込みながら成長
  • 2019 年には CNCF の graduated (誰もが利用可能な状態のプロダクトになった)プロジェクトとして位置付けられ、CNCF では成熟した状態に位置付けられた唯一のランタイムになった

Docker ツールでビルドする「コンテナ・イメージは非推奨にならない」

  • Docker ツールで構築したコンテナ・イメージは、Kubernetes 上でも動作し続ける
  • BuildKit という次世代の構築基盤は柔軟なアーキテクチャであり、Docker の構築で使えるだけでなく、Docker が無いインフラ上では containerd や runc と直接やりとりできる
  • Docker はcontainerd の開発にコミットしており今後も投資を継続し、buildkit コミュニティは成長しており、インフラがどこで・どのようにホストされていようが Docker 構築に役立つ
  • Docker イメージの構築・実行は、ローカル環境だけでなくKubernetes クラスタでも利用し続けられるため、今回の非推奨は、開発作業(experience)には何ら影響を与えない。

Kubernetes プロジェクトは今何を非推奨にするのか?

  • Kubernetes が非推奨としたのは dockershim
  • dockershim は、Kubernetes の kubelet (Kubernetes のノード上で動作するエージェント)のコンポーネントで、Docker Engine と通信するもの(つまり、Docker コンテナやイメージが非推奨ではない)
  • Dockershim Deprecation FAQ | Kubernetes
  • 関連する tweettweet

何か対策が必要?

  • 今日現在、 Kubernetes v1.20 は Kubernetes 管理者は docker コマンドを利用し続けられる状態であり、kubectl コマンドで Kubernetes クラスタの管理を継続できる(今日、今すぐ何か影響が出るわけではない)
  • 今後の Kubernetes マイナーリリース(v1.20.x)では、最終的に dockershim のサポートが削除されるため、docker コマンドを使ってクラスタの調査(inspect)が行えなくなる
  • (そのかわり、docker コマンドではなく)、同様の kubectlctl コマンド(containerd のコマンドライン・インターフェース)を使う
  • 開発者は今もなお Docker ツールをつかって docker build、docker pushできますし、docker run で コンテナおよびコンテナ・イメージを Kubernetes クラスタ上でできる

詳細な背景

原文

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です