web-dev-qa-db-ja.com

DockerとSnapの主な違いは何ですか?

最近のc't(悲しいことに paywalled )には、SnapとFlatpakに関する記事があります。

enter image description here

これはDockerに非常によく似ていますが、多くの概念は同じです。 SnapとDockerの違いは何ですか?それらの異なるユースケースはありますか?

84
Ivanov

Container Campでマークシャトルワースの講演「アプリのために純粋に別のコンテナが必要な理由」 が質問に関連することがあります。彼は最初にVM、コンテナ、Dockerについて全般的に語り、スナップを続け、それらが約9分でどのように適合するかを説明します。

  • 異なる種類のコンテナは同じように見えますが、異なる目的に使用されます。
  • コンテナはカーネルレベルには実際には存在しません。さまざまな種類の幻想が可能です。独立して、コンテナが見るユーザー、ネットワーク、ディスク、プロセスに関する幻想を作成できます。
  • 異なる種類のコンテナは、実際に作成される幻想の異なるクラスに関するものです。
  • スナップは次のとおりです。
    • 不変ですが、基本システムの一部です。
    • ネットワークの観点から統合されているため、各コンテナが独自のIPアドレスを取得するDockerとは異なり、システムIPアドレスを共有します。
    • 言い換えると、Dockerは何かthereを提供します。 Snapsは、hereを提供します。たとえば、デスクトップでは、スナップはその上にアプリを提供します。
    • スナップはシステムの残りを汚染することはできません。専用の箱に入っています。ただし、システムの残りの部分は(読み取り専用で)表示されるため、システムと対話して統合できます。

Dockerと比較したさまざまなユースケースについて尋ねました。 Snapsでできることはここにありますが、Dockerではできません:デスクトップアプリ。サードパーティはスナップを使用してデスクトップアプリを出荷でき、ユーザーはそれらを簡単にインストールおよび更新できます。 Dockerコンテナは、(簡単に)画面上でユーザーとグラフィカルに対話したり、ユーザーのホームディレクトリからドキュメントを読み込んだり、ユーザーのWebカメラ経由でビデオ会議を提供したりすることはできません。スナップは許可されます(許可が与えられると)。

PPAを使用するよりも、これがどのように優れているかを尋ねるかもしれません。しかし、Dockerと比較すると、システムに依存関係を手動でインストールするよりもDockerの方が優れているかどうかを尋ねるようなものです。より良いのですが、Docker固有ではない別の質問でどのように回答するのが最適でしょう。

107
Robie Basak