2016-04-02 11 views
0

私はドッカーに非常に興味があります。私はそれについて読んだことがありますが、私は少しコンテナと混同しています。我々は、ドッカーハブから公式のnginxを引っ張るとき、それはアプリケーションかnginxだけがオペレーティングシステムに付属していますか?ドッカーのexec -it app-name bashを使用すると、すべてのコンテナにオペレーティングシステムが付属しているようです。私は、パッケージの更新やインストールを行うことができます。この部分は私にとって混乱しています。なぜなら、それはアプリケーションだけで何もないという考えがあったからです。ドッカーの混乱

はそれを依存 sfm1977

答えて

1

、ありがとうございました。ほとんどのソフトウェアは、実行するオペレーティングシステムの一部を必要とします(ライブラリやユーティリティ)。そのような場合、アプリケーションが実行できるように、「基本」オペレーティングシステムが使用されます(公式の画像にはDebianまたはAlpine)。このようなコンテナにdocker execを入れてbash/shellセッションを開始することはできますが、これはデバッグにのみ使用する必要があります。一般的にコンテナ(nginx)は、アプリケーション nginxと見なすべきであり、「nginxがインストールされた仮想マシン」ではありません。

一部のソフトウェアは静的にリンクされています。は、はインストールする必要があります。たとえば、hello-worldまたはtraefikの画像はではありません。は、オペレーティングシステムをベースとして使用し、1つのバイナリのみを含んでいます。

+0

私は、nginxの公式画像の違いは、Ubuntu(FROM)に基づいて、私は、nginxで画像を作る場合は、いいえ?リソースは消費されていますか? OSに基づいてnginx、apache、mysqlなどのアプリケーションをイメージする方が簡単です。 –

+0

Dockerの公式ドキュメントでは、ほぼすべてのDockerizingの例では、Ubuntu os Centos OSをベースとして使用しています。 –

+0

ドキュメントは、従来のアプリケーションを「Dockerize」する方法を説明するものです。 UbuntuやDebianをベースイメージとして使用しています。 Dockerでアプリケーションを使用する場合は、主な関心事はアプリケーション*自体である必要があり、そのソフトウェアを実行するための「基本」イメージのみを「要件」とみなします。ほとんどの公式画像は、DebianやAlpineをベースにしています(公式のnginx画像; https://hub.docker.com/_/ngngx/を参照)。アルパインバージョンを使用して小さなイメージを作成するか、公式イメージを拡張する予定がある場合は "Debian"バージョンを使用し、アルパインが提供しない特定のニーズを持ってください – thaJeztah

1

「OS」とは何かによって異なります。あなたは両方ともkernel spaceuser spaceの両方を意味しますか?答えはいいえです。コンテナはユーザー空間のみを変更します。

Dockerは、chrootやlxcのように動作し、ホストとバイナリ/ライブラリの単一のLinuxカーネルをコンテナ内で使用して実行しますが、nutshellのコンテナは単一のマシン上の独立した名前空間です。
したがって、 "OS"はコンテナの場合は変更されませんが、"environmnet"(libc、shells、すべてのもの)が変更されます。
また、このwikiのcgroupについての記事を確認してください。
PS:確かに、あなたがLinuxにいないときは、Dockerを使うためにLinuxでVMをインストールする必要があります。しかし、これは別の質問です。

+0

私はnginxの公式画像の違いは、Ubuntu(FROM)に基づいて、私は、nginxで画像を作る場合、大丈夫ですか?リソースは消費されていますか? OSに基づいてnginx、apache、mysqlなどのアプリケーションをイメージする方が簡単です。 –

+0

Dockerの公式ドキュメントでは、ほぼすべてのDockerizingの例では、Ubuntu os Centos OSをベースとして使用しています。 –

+0

@SérgioMarques「FROM」の場合の「OS」は、Ubuntuイメージ(パッケージマネージャ、言語バージョンなど)で使用される「環境」を意味します。したがって、違いはメンテナによって選択されたベースイメージにあります。私は何の公式のイメージを使用することをお勧めします、それはより安定して安全(バグ/ CVEの修正、更新など)されます。しかし、もしあなたが "nginx own"イメージを使いたいなら、nginxがそれに基づいてコンテナを更新して再作成するときに、このイメージを更新することもできます。 – loadaverage