GNU/Linux >> Linux の 問題 >  >> Cent OS

Dockerイメージとコンテナー:主な違い

はじめに

Docker は、アプリケーション開発を容易にし、簡素化するように設計されたオープンソースソフトウェアです。これは、アプリケーションを構築、展開、およびテストするための分離された仮想化環境を作成する、サービスとしてのプラットフォーム製品のセットです。

ソフトウェアの習得は比較的簡単ですが、新しいユーザーが混乱する可能性のあるDocker固有の用語がいくつかあります。 Dockerfile、イメージ、コンテナー、ボリューム、およびその他の用語は習得する必要があり、時間の経過とともに第二の性質になるはずです。

これらの要素の基本的な役割を理解することをお勧めします。それは彼らと一緒に働く方法についての学習をスピードアップします。多くのユーザーが尋ねる質問の1つは、次のとおりです。

W Dockerイメージとコンテナの違いは何ですか?

この記事では、この2つの違いと、それらの関係について説明します。詳細については、こちらをご覧ください。

Dockerイメージとは何ですか?

Docker画像 は、アプリケーションの実行に必要なソースコード、ライブラリ、依存関係、ツール、およびその他のファイルを含む不変(変更不可)ファイルです。

読み取り専用のため 品質のため、これらの画像はスナップショットと呼ばれることもあります。これらは、特定の時点でのアプリケーションとその仮想環境を表します。この一貫性は、Dockerの優れた機能の1つです。これにより、開発者は安定した均一な条件でソフトウェアをテストおよび実験できます。

画像はある意味でテンプレートであるため 、それらを開始または実行することはできません。あなたができることは、コンテナを構築するためのベースとしてそのテンプレートを使用することです。コンテナは、最終的には単なる実行中のイメージです。コンテナを作成すると、不変の画像の上に書き込み可能なレイヤーが追加されます。つまり、コンテナを変更できるようになります。

コンテナを作成するイメージベースは個別に存在し、変更することはできません。コンテナ化された環境を実行する場合、基本的に読み取り/書き込みコピーを作成します コンテナ内のそのファイルシステム(Dockerイメージ)の。これにより、コンテナレイヤーが追加されます これにより、画像のコピー全体を変更できます。

1つのイメージベースから無制限の数のDockerイメージを作成できます 。画像の初期状態を変更して既存の状態を保存するたびに、その上に追加のレイヤーを含む新しいテンプレートを作成します。

したがって、Dockerイメージは一連のレイヤーで構成できます。 、それぞれ異なりますが、前のものからも発生しています。イメージレイヤーは、仮想環境の起動にコンテナレイヤーを使用すると、コンテナーレイヤーが追加される読み取り専用ファイルを表します。

Dockerコンテナとは何ですか?

Dockerコンテナ は、ユーザーが基盤となるシステムからアプリケーションを分離できる仮想化されたランタイム環境です。これらのコンテナはコンパクトでポータブルなユニットであり、アプリケーションをすばやく簡単に起動できます。

価値のある機能は標準化です コンテナ内で実行されているコンピューティング環境のアプリケーションが同じ状況で動作することを保証するだけでなく、他のチームメートとの共有も簡素化します。

コンテナーは自律的であるため、強力な分離を提供し、他の実行中のコンテナーや、コンテナーをサポートするサーバーに割り込まないようにします。 Dockerは、これらのユニットが「業界で最も強力な分離機能を提供する」と主張しています。したがって、マシンを安全に維持することを心配する必要はありません。 アプリケーションの開発中。

仮想化がハードウェアレベルで行われる仮想マシン(VM)とは異なり、コンテナーはアプリ層で仮想化されます。 1台のマシンを利用し、そのカーネルを共有し、オペレーティングシステムを仮想化して分離されたプロセスを実行できます。これにより、コンテナは非常に軽量になります 、貴重なリソースを保持できるようにします。

Dockerイメージとコンテナ

画像とコンテナの違いについて説明するとき、それらを対立するエンティティとして対比することは公平ではありません。両方の要素は密接に関連しており、システムの一部です Dockerプラットフォームによって定義されます。

DockerイメージとDockerコンテナーを定義する前の2つのセクションを読んだ場合は、2つがどのように関係を確立するかについてすでにある程度理解しているかもしれません。

イメージはコンテナーなしで存在できますが、コンテナーはイメージを実行して存在する必要があります。したがって、コンテナはイメージに依存し、それらを使用してランタイム環境を構築し、アプリケーションを実行します。

2つの概念は、Dockerコンテナーを実行するプロセスの必須コンポーネント(またはフェーズ)として存在します。実行中のコンテナーを持つことは、そのプロセスの最後の「フェーズ」であり、前のステップとコンポーネントに依存していることを示します。これが、Dockerイメージが基本的にコンテナーを管理および形成する理由です。

DockerfileからImage、Containerへ

それはすべて、特定のDockerイメージを構築する方法を定義する命令のスクリプトから始まります。このスクリプトはDockerfileと呼ばれます。このファイルは、概説されたコマンドを自動的に実行し、Dockerイメージを作成します 。

Dockerfileからイメージを作成するためのコマンドは、 docker buildです。

次に、イメージはテンプレート(またはベース)として使用され、開発者はそれをコピーしてアプリケーションを実行するために使用できます。アプリケーションには、実行するための分離された環境(コンテナー)が必要です。 。

この環境は単なる仮想の「空間」ではありません。それはそれを作成したイメージに完全に依存しています。 Dockerイメージにあるソースコード、ファイル、依存関係、バイナリライブラリは、すべてコンテナーを構成するものです。

画像からコンテナレイヤーを作成するには、コマンド docker createを使用します

最後に、既存のイメージからコンテナを起動した後、そのサービスを開始してアプリケーションを実行します。


Cent OS
  1. Dockerイメージからファイルを抽出しますか?

  2. Dockerコンテナからカスタムイメージを作成する方法

  3. Docker イメージ/コンテナの中身は?

  1. 7つの楽しいLinuxコンテナ/画像転送機能

  2. Docker Alpine コンテナーでのシェルの開始

  3. Docker コンテナーで実行されている OS はどれですか?

  1. Dockerの概要

  2. Dockerイメージに基づいてデプロイされたコンテナーを更新する

  3. コンテナと Dockerfile から Docker イメージを作成する方法