Docker デスクトップをネイティブ Linux コンテナーに置き換えて以来、決して振り返ることはありませんでした

in tech

Docker Desktop は間違いなくエレガントです。すっきりしたインターフェイス、ワンクリック管理、複雑さの抽象化により、初心者にとっては最適ですが、その抽象化には代償が伴います。

Docker Desktop 自体が隠れた Linux 仮想マシンを起動して機能するため、Linux 上で Docker Desktop を実行することはほとんど意味がありません。つまり、コンテナーは実際にはマシン上で実行されているのではなく、VM 内で実行されています。その追加レイヤーは常にリソースを消費し、トラブルシューティングが悪夢に変わってしまいます。そのため、私はネイティブ Linux コンテナーへの移行を決意し、決して振り返ることはありませんでした。

Incus は単なる「Docker の代替品」ではありません

それは異なるコンテナの伝統から来ています

ほとんどの Docker 代替製品は、Docker のように動作しようとします。 Podman はイメージとコマンド モデルを使い慣れたものに保ち、nerdctl はcontainerd に Docker のようなインターフェイスを提供し、Rancher Desktop や同様のツールはローカルの Kubernetes またはコンテナ ランタイムをより親しみやすいものにラップします。これらは便利なツールですが、依然として主にアプリケーション コンテナーの世界で生きています。

Incus およびその他の関連プロジェクトを支援する linuxcontainer サイトのスクリーンショット クレジット: Linuxcontainer

インカスは別の系統から来ています。これは、LXD スタイルのシステム コンテナ モデルのコミュニティ継続です。つまり、単一プロセスのアプリケーション イメージだけでなく、完全な Linux 環境を管理するという考えに基づいて構築されています。 Incus コンテナーは軽量 VM のように感じることができます。これには、初期システム、ネットワーキング、ストレージ、プロファイル、スナップショット、永続的な ID があります。 SSH で接続し、パッケージをインストールし、サービスを実行し、小さなマシンのように扱うことができます。

Rancher、LXC、Podman のロゴが入ったカラフルな輸送コンテナのスタックと、その横に錆びた青い Docker コンテナがあります。

Docker の使用をやめて、代わりに次の 4 つの代替手段のいずれかを試してください

まだすべてのチップを Docker に配置しないでください。

しかし、長い間、OCI アプリケーション イメージには Docker を、システム コンテナと VM には Incus を使用する必要がありましたが、Incus が OCI コンテナのサポートを開始し、今ではそれを使用してほとんどのコンテナを実行できるようになりました。

OCI サポートにより方程式が変わりました

Incus で Docker イメージを実行できるようになりました

OCI サポートは、Incus を Docker Desktop の代替品としてさらに興味深いものにする部分です。 Docker はワークフローを普及させましたが、イメージ形式とレジストリ エコシステムは、もはや Docker Desktop エクスペリエンスに関連付けられていません。一般に「Docker イメージ」と呼ばれるものの大部分は、実際にはレジストリを通じて配布される OCI スタイルのイメージです。

Incus OCI サポートにより、Docker Hub などのレジストリからイメージを使用してアプリケーション コンテナをプルして実行できます。つまり、実質的なギャップは小さくなります。永続的な環境が必要な場合は通常の Linux システム コンテナを実行でき、パッケージ化されたサービスのみが必要な場合は OCI アプリケーション コンテナを実行できます。

私のローカル インフラストラクチャには両方の種類のコンテナを含めることができるため、これが Incus にピンと来た変化です。アプリケーションイメージがすでに適切なユニットである場合、私は OCI コンテナを好みます。つまり、Nginx、Caddy、Redis、小規模 Web アプリ、エクスポーター、テスト サービス、および事前にパッケージ化されたツールを OCI コンテナーとして実行できます。開発マシン、ビルド環境、またはサービス ホストは、システム コンテナーとして実行できます。 VM は、別個のカーネルまたはより強力な分離境界が必要な場合に引き続き使用できます。

フレームワーク ラップトップ 13

ブランド

フレームワーク

価格

799ドルから

ラップトップを自分で組み立てて、まさに欲しいものを手に入れ、部品が古くなったら交換します。


Compose は依然としてマルチコンテナ アプリケーション スタックの記述に非常に優れているため、Incus が 1 対 1 の Docker Compose の完全な代替品であるとは言えません。良いのは、Incus が別のロゴで Compose になろうとしているわけではないということです。複数のインスタンス タイプをサポートするローカル プライベート クラウドのように感じられますが、それは別のモデルであり、少し調整が必要ですが、利点は、調整がすぐに返ってくることです。

Web UI により、Incus がローカル クラウドのように感じられます

すべてをダッシュ​​ボード製品にすることなく可視性を提供します

Incus コマンド ラインは、ターミナルからすべてを管理できるほど優れています。これが私が毎日のワークフローのほとんどを開始する方法です。しばらくの間、他に何も必要ないと思いました。

コンテナと NAS サーバーを運ぶ様式化されたクジラを特徴とする Docker ロゴのイラスト。

DevOps プロのように Docker コンテナを管理する「怠惰な」方法

キーボードファーストの UI を使用して、ターミナルを離れることなく、コンテナーの開始/停止、ログの監視、デバッグを簡単に行うことができます。

そこでWeb UIを使い始めました。 Web インターフェースは Incus の感触を変えます。コンテナー、VM、ネットワーク、ストレージ ボリューム、プロファイル、イメージを 1 か所で表示できるようになります。 5 つのコマンドを実行して出力を頭の中でつなぎ合わせなくても、実行中の内容を確認し、構成を検査し、コンソールを開いてスナップショットを確認し、環境の形状を理解することができます。また、数回クリックするだけで GPU パススルーを実行できます。

Web UI はシステムを理解する代わりにはなりませんが、システムを検査可能にするのには非常に優れています。 Incus は、GUI をアーキテクチャの中心にすることなく、それを実現します。

日々のワークフローがシンプルになりました

ホストは清潔感を感じます

Incus にさらに多くの作業を移して最初に気づいたのは、ホストがどれほどすっきりしていると感じたかということでした。データベース、言語ランタイム、メッセージ キューのランダムなバージョンのインストールを停止し、ラップトップ上で直接依存関係を構築できます。もちろん、これは Docker にもすでに当てはまっていましたが、Incus により、長時間実行される開発環境がより自然に感じられるようになりました。

たとえば、Debian ベースの開発ボックスが必要な場合、通常のシステムをシミュレートするためだけに Dockerfile を作成する必要はありません。 Debian コンテナを起動し、必要なものをインストールし、スナップショットを作成して保存できます。何かが壊れた場合は、スナップショットを復元します。 2 番目のコピーが必要な場合は、クローンを作成します。別のディストリビューションに対してテストする必要がある場合は、別のイメージを起動します。

これは、インフラストラクチャの作成と実験に特に役立ちます。 systemd の動作、ネットワーキング ツール、パッケージ マネージャーの違い、サービス構成をテストする場合、単一プロセスの Docker コンテナーよりもシステム コンテナーの方が合理的です。環境が小さな Linux マシンのように動作することを望みます。これは通常、記事や実験の目的がそれであるためです。 Docker をその役割に押し込むことはできますが、常に少し違和感を感じます。

木製の表面に積み重ねられた 2 台のミニ PC の背面図。デュアル イーサネット、HDMI、USB、USB-C、電源接続などのポートが強調表示されています。

ミニ PC をネットワークの強力なツールに変える 1 つの機能

すべてのミニ PC にはこれらのポートが 2 つ必要です

ネットワーキングはそれほど神秘的ではありません

まだネットワークを構築しているため、罰せられる可能性があります

コンテナ ネットワーキングでは、多くの「単純な」ツールがそれほど単純ではなくなります。 Docker Desktop は、特に Linux 以外のプラットフォームで、この多くの部分を隠します。 Linux では、魔法はあまり必要ありませんが、習慣は残ります。ポートを公開し、ブリッジを検査し、どの DNS パスが使用されているか疑問に思い、最終的には以前の楽観主義を後悔しながら iptables または nftables ルールを読むことになります。

Incus ネットワーキングは、通常の Linux 管理に近い方法でマネージド ブリッジの作成、ネットワークへのインスタンスの接続、プロファイルによるデバイスの割り当て、プロキシ デバイスの使用、構成の検査ができるため、より明示的に感じられます。ネットワークを理解する必要性がなくなるわけではありませんし、何も良いことはありません (「すべき」とも言えます) が、コンテナーがポート マッピングを備えたプロセスとしてだけでなく、デバイスを備えたマネージド インスタンスとして扱われるため、モデルの推論が容易になります。


なぜ戻らないのですか?

私がインカスに留まった理由はイデオロギーではありません。あるロゴを別のロゴに置き換えることは気にしません。私は、高速で、検査可能で、スクリプト化可能で、Linux に近いローカル環境を持つことを重視しています。 Incus は、小型の Linux マシンが必要な場合にシステム コンテナを提供し、コンテナが不十分な場合に VM を提供します。この組み合わせを倒すのは難しいです。

Docker Desktop は、特に Linux コンテナが VM を通過する必要がある macOS や Windows では、多くの人にとって今でも役に立ちます。しかし、Linux では、日常のワークフローに追加のレイヤーを持ち込む意味がなくなりました。ネイティブ Linux コンテナーはより直接的に感じられ、Incus はコンテナーを単純化することなく管理しやすくします。

関連情報は以下のリンクからご確認いただけます

公式情報はこちら

関連記事

前の投稿
これら 4 つの知られていない Docker コンテナを試してみたところ、現在は 24 時間年中無休で実行されています。
次の投稿
この時間を節約できる Google マップの機能を知ってから、住所を調べるのをやめました

関連記事