ドッカーエンジン20.10の紹介

Docker エンジン 20.10 の次のメジャー リリースが完了したことをお知らせします。 このリリースでは、コミュニティエンジンへのDockerの投資を継続し、cgroups V2のサポート、複数の機能を実験的(ルートレスを含む RUN --mount )から移動し、API、クライアント、ビルドエクスペリエンスに他の多くの改善を加えます。 変更の完全なリストは、 変更ログの一部として見つけることができます。 

エンジン e1431551143773

Docker Engine は、ユーザーが Linux 上でコンテナー オブジェクトを簡単に構築、管理、共有、実行できるようにする基盤となるツール/クライアントです。 Docker エンジンは、次の 3 つのコア コンポーネントで構成されています。

  • 実行時間の長いデーモンプロセスを持つサーバー。
  • プログラムが Docker デーモンとの対話と指示に使用できるインターフェイスを指定する API。
  • コマンドラインインターフェイス(CLI)クライアントドッカー。

Docker Engine/K8sに関する最近の質問に興味がある方は、 Dieuのブログをご覧ください。

これに加えて、このエンジンのリリースにも貢献してくれたコミュニティの皆さんとメンテナの皆さんに心から感謝したいと思います。 彼らの貢献、努力、サポートがなければ、私たちは今いる場所にいなかったでしょうし、このエンジンもリリースしなかったでしょう。 この記事全体で「私たち」と言うとき、私はDockerの(素晴らしい)エンジニアを意味するだけでなく、このリリース🙂の形成を支援したDockerとより広いコミュニティの外部の(素晴らしい)エンジニアを意味します 

ここから パッケージを入手することで、Docker Engineの20.10バージョンを開始するか、今週のDocker Desktopのコミュニティリリースで利用可能になります。それでは、20.10の変更点のいくつかを詳しく見てみましょう。 

cgroup V2 の初期サポート

Dockerがどのように機能するかを思い出させるのと同じように。Docker は、いくつかの基本的な Linux カーネル機能を使用して、実行中のプロセスとそれに関連付けられているファイルを分離します。 私たちが利用するこれらの機能の1つはcgroupsです。 Linux の cgroup は、プロセスのリソース使用量 (CPU、メモリ、ディスクなど) を制限します。 Docker は、これらを Linux 名前空間の使用と組み合わせて、コンテナー内のプロセスを分離します。 

Cgroups の V2 は、2016 年に Linux カーネルに初めて導入され、グループの管理方法が変更され、ルートレスコンテナにリソース制限を課すためのサポートが行われました。 これがどこから来たのか、そしてこれらの変更が来るのに時間がかかった理由についてのもう少しの背景については 、Akihiroのブログをチェックしてください。

runcでのこれのサポートが導入されたので、Dockerに追加しました。 この変更により、Dockerは実験的な機能から完全にサポートされている機能にルートレスを卒業することができました。

すべてのロギングドライバーでのDockerログの読み取りのサポート

Docker エンジン 20.10 より前のバージョンでは、jsonfile ドライバーとジャーナル ログ ドライバーでは、Docker ログを使用したコンテナー ログの読み取りがサポートされていました。 ただし、多くのサードパーティのログドライバーは、次のような docker ログを使用したログのローカル読み取りをサポートしていませんでした。

  • シスログ
  • ゲルフ
  • 流暢
  • アウログス
  • スプランク
  • エトログス
  • gcplogs
  • ログエントリ

これにより、自動化された標準的な方法でログデータを収集しようとすると、複数の問題が発生しました。 ログ情報は、そのサードパーティツールで指定された形式でサードパーティのソリューションを介してのみアクセスおよび表示できます。

Docker Engine 20.10 以降では、構成されているログ ドライバーまたはプラグインに関係なく、docker ログを使用してコンテナー ログを読み取ることができます。 この機能はデュアルロギングとも呼ばれ、エンジンは「ローカル」ロギングドライバーに情報をログに記録するように構成されているため、Dockerログを使用して、使用するリモートログドライバーに関係なく、一貫した形式でコンテナログをローカルに読み取ることができます。 詳細については、Docker ドキュメントの「既定のログ ドライバーを構成する 」を参照してください

OS サポートの変更

エンジンの20.10リリースでは、OSサポートを更新しています、これは、Ubuntu 20.10とFedora 33の両方のサポートを追加し、CentOS8のサポートを継続することを意味します–これらのOSのユーザーがDockerの最新機能にアクセスできるようにします。  

CLI の改善

これらすべてに加えて、CLIエクスペリエンスを向上させるために複数の変更を加え、必要な機能へのアクセスとこれを自動化するための構成可能性を提供しました。 CLI 全体でのエクスペリエンスの一貫性を高め、古いコマンドや未使用のコマンドを削除してシンプルにし、新しいオプションを追加して、Docker の使用開始とスクリプト作成を容易にすることを検討してきました。 

これらのいくつかを見てみましょう:

Docker push - デフォルトの動作をプルと一致するように変更しましたが、タグなしで画像名をプッシュすると、すべてのタグではなくタグのみをプッシュ :latest するようになりました。 これをサポートするために、 -a/all-tags 画像のすべてのタグをプッシュするフラグも追加しました。 

--pull=missing|always|never –実行コマンドと作成コマンドに追加され、画像をプルするタイミングをより細かく制御できるようになりました

docker exec –新しい -env-file フラグを追加しました。 これにより、–env-file フラグと環境変数を含むファイルを指定して docker exec を実行できます。 その後、コマンド内のファイル内の変数のいずれかを印刷/使用します。

 Docker エンジン 20.10 の詳細については、以下を参照してください。