廃止された Docker は Podman に置き換えられますか?

廃止された Docker は Podman に置き換えられますか?

Kubernetes チームは最近、最新バージョンの Docker でサポートされている機能を廃止し、これらの機能は以降のバージョンで削除されることを発表しました。

最近、Kubernetes チームは最新バージョン 1.20 をリリースし、多くのコンテンツを更新しました。

ストレージボリュームのスナップショット機能が安定しました。Kubectl Debug がベータ版に移行しました。ベータ版: API の優先順位と公平性、IPV4/IPV6 Alpha 機能の更新、GA: プロセス PID の制限、Dockershim が非推奨になりました。Exec プローブのタイムアウト処理など。(詳細については、https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/ を参照してください)

その中には、開発者コミュニティにとって間違いなく衝撃的なアップデートがあります。それは、Docker でサポートされている機能の廃止の公式発表です。では、Kubernetes はなぜこれを実行し、どのような影響を与えるのでしょうか?

Docker は、コンテナ化された方法でアプリケーションをパッケージ化、配布、および展開する方法です。 2013 年 3 月 13 日の最初のリリース以来、Docker はコンテナ業界の事実上の標準となっています。 Kubernetes は、Google が開発したオープンソースのコンテナ オーケストレーション システムです。

Kubernetes アーキテクチャ図 (Wikipedia より)

Docker と OpenShift

2015 年のサミットで、Red Hat は OpenShift V3.0 をリリースしました。この新しいバージョンの OpenShift では、最下層で Docker コンテナを使用し、Kubernetes を使用してイメージをオーケストレーションし始めます。しかし、2016 年の Red Hat Summit で、Docker は Red Hat の OpenShift に対して激しい攻撃を開始しました。彼らは以下のツイートを投稿しただけでなく、参加者に「模倣品はお断りします」と書かれたTシャツも配布した。

写真

明らかに、左側の模造クジラは Red Hat の OpenShift を嘲笑しています。当時、OpenShift は Docker ベースのコンテナを使用していました。 Red Hat がリリースした Docker は、一般的には元のバージョンより少し遅れており、いわゆる「エンタープライズ サポート」を提供するために、Red Hat は古いバージョンの Docker にパッチを当てるという動作を採用しています。しかし対照的に、Docker は常に最新バージョンをリリースしています。

もちろん、エンタープライズ アプリケーションをアップグレードで維持するか、パッチを移植するかについては意見が分かれているため、ここではこの点についてはコメントしませんが、Red Hat 自身のサミットでの Docker の行動は確かに少し予想外のものでした。それ以前から Docker は素晴らしいテクノロジーであり、RedShift の重要な部分であったことは認めざるを得ませんが、その日から事態は悪化し始めました。

プラットフォーム戦争

初期の PaaS プラットフォームは主に OpenShift であり、競合の 2 つの Docker と Pivotal もありました。 Docker は誰もがよく知っているので、これ以上説明する必要もありません。Pivotal は、EMC と VMware によって 2013 年に設立された、オープンソースの PaaS ソリューションに重点を置いた企業です。同社のエンタープライズ ソリューションが非常に成功した理由は 1 つだけです。それは、特に Pivotal Labs と組み合わせた場合のユーザー エクスペリエンスが優れていることです。

Docker はエンタープライズ ソリューションの注目の的となっています。その利点は、開発者がすでに Docker エンジンに精通していることです。当時、Kubernetes はどこにも見つかりませんでした。しかし、Docker による OpenShift への攻撃により、Red Hat は Kubernetes にリソースを投資せざるを得なくなりました。誰もが後からその結果を目にしました。Kubernetes は大きな成功を収め、業界全体の支持を獲得しました。

このとき、Docker は状況を救うために Docker Swarm を立ち上げましたが、手遅れでした。 2016 年後半には、Kubernetes が Docker Swarm を上回り、業界の事実上の標準となりました。結局のところ、Docker Swarm は Kubernetes に何の影響も与えませんでした。これは Docker の最初の終焉と言えるでしょう。それ以降、Docker はエンタープライズ レベルの PaaS ソリューションではなくなり、クラウド ネイティブ システムの一部としてのみ存在できるようになりました。幸いなことに、Docker は常に Kubernetes の重要な部分であり続けています。

KubernetesがDockerの廃止を発表

最近、Kubernetes は Docker を廃止すると発表しました。

(公式ブログリンク: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/):

写真

これは間違いなく Docker の死の 2 回目の発表です。 Kubernetes 自体によれば、Docker はもはや必要な技術ではなく、技術的負債となっているとのことです。 Kubernetes 1.19 より前のバージョンでは、Dockershim というモジュールを介して Docker に接続し、Docker が Containerd に接続してコンテナを作成する必要がありました。技術的には、実際のコンテナ ランタイムは Docker ではなく Containerd です。 Docker の役割は、Containerd 上にコンテナを作成することだけです。人間のユーザーとしては、Docker run を実行するだけでコンテナを作成できるのは非常に便利です。しかし、便利な反面、Docker は多くの無駄な操作と技術的負債をもたらし、Kubernetes にとって負担となります。 Kubernetes は Docker を完全にバイパスし、Containerd 上にコンテナを作成して同じ効果を実現できます。このアプローチは Kubernetes 1.20 で採用されました。

Docker のビジネス モデルは失敗しましたが、Docker が業界全体に多大な貢献を果たしたことを認めなければなりません。 Docker がもたらすテクノロジーは業界最高です。現在に至るまで、当社の CI/CD システムは Docker に大きく依存しています。 Docker がなければ Kubernetes は成功しなかったでしょうし、Kubernetes には今でも Docker の影が残っています。

しかし、心配しないでください。Kubernetes チームは、アップグレード プロセスを可能な限りスムーズにするために多くの作業を行ってきました。 1.20 にアップグレードしても、Docker が非推奨であるという警告のみが表示されます。 Kubernetes の現在の計画では、2021 年末にリリースされる 1.22 で Docker サポートが完全に削除されるため、開発者はそれまでに Containerd や CRI-O などの他のコンテナ ランタイムに切り替える必要があります。

Dockerの代替

Docker が放棄された後、開発者たちはその代替案について議論し始めましたが、その中でも Containerd と Podman が大きな期待を集めていました。

Containerd は、シンプルさ、堅牢性、移植性を重視した業界標準のコンテナ ランタイムです。コンテナのライフサイクルを管理し、Kubernetes CRI などのプロジェクトで使用でき、広範な業界協力の基盤を築くことができます。

Podman はもともと CRI-O プロジェクトの一部でしたが、後に libpod と呼ばれる別のプロジェクトに分離されました。 Podman のユーザー エクスペリエンスは Docker と似ていますが、Podman にはデーモンがありません。コンテナは OCI ランタイム (デフォルトでは runc) を介して直接起動されるため、コンテナ プロセスは Podman の子プロセスになります。これは Linux の fork/exec モデルに似ていますが、Docker は C/S (クライアント/サーバー) モデルを使用します。

Docker は現在のコンテナ市場で依然として大きな割合を占めていますが、放棄される運命にあることは間違いありません。この移行期間中は、Containerd と Podman を採用したほうがよいでしょう。

これで、非推奨の Docker は Podman に置き換えられるかどうかについてのこの記事は終わりです。記事はこれで終わりです。Podman に代わる Docker についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Podmanはコンテナを自動的に起動し、Dockerと比較します
  • podmanコンテナツールの具体的な使用方法

<<:  MYSQL での Truncate の使用法の詳細な説明

>>:  JSはプログレスバーをドラッグして要素の透明度を変更することを実装しています

推薦する

Vueはログインタイプの切り替えを実装します

この記事では、ログインタイプの切り替えを実装するためのVueの具体的なコードを例として紹介します。具...

MySQL遅延スレーブを導入するメリットのまとめ

序文MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレ...

HTMLフローティングプロンプトボックス機能の実装コード

一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...

Vueプロジェクトの最適化とパッケージ化の詳細な説明

目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...

Linux のソフトリンクとハードリンクの詳細な説明

目次1. ファイルとディレクトリの基本的な保存2. Inコマンドの紹介(1)lnコマンドの基本情報を...

MySQL ログインおよび終了コマンドの形式

mysql ログインのコマンド形式は次のとおりです。 mysql -h [hostip] -u [ユ...

ネイティブJSでマウススライドによる愛の拡散効果を実現

この記事では、マウスをスライドすると愛が広がる js 特殊効果を紹介します。効果は次のとおりです。 ...

KVM ベースの SRIOV パススルー構成とパフォーマンス テストの詳細な説明

SRIOVの導入、VFパススルー構成、パケット転送速度性能テスト目次1. SRIOVの紹介2. 環境...

jQueryはフォーム検証を実装する

jQueryを使用してフォーム検証を実装します。参考までに、具体的な内容は次のとおりです。登録.ht...

プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...

MySQL の例 DTID マスタースレーブ原理の分析

目次1. GTIDの基本概念2. GTIDの利点3. GTIDの仕組み4. 従来のレプリケーションに...

nestjs からフロントエンドに返されるデータ形式のカプセル化実装

通常、開発プロセスでは、インターフェイス要求の成功または失敗は httpcode に基づいて決定され...

Windows が MySQL サービスを開始できず、エラー 1067 を報告する場合の解決策

突然、MySQLにログインすると、アクセスが拒否されたか、データベースに接続できないと表示されました...

初心者向け入門チュートリアル④:サブディレクトリのバインド方法

これが何を意味するのかを理解するには、まずサブディレクトリとは何かを知る必要があります。では、サブデ...