Dockerにおけるコンテナとイメージの違いについてお話ししましょう

Dockerにおけるコンテナとイメージの違いについてお話ししましょう

鏡とは何ですか?

イメージは、複数のイメージ レイヤー (UnionFS および AUFS ファイル ユニオン システムによって実装) で構成されたファイル システムとして考えることができます。イメージ レイヤーは、単に基本イメージとして理解することもでき、各イメージ レイヤーはポインターの形式で重ね合わされます。

コンテナとは何ですか?

コンテナの定義はイメージの定義とほぼ同じで、レイヤーのスタックの統合ビューでもあります。唯一の違いは、コンテナの最上位レイヤーが読み取りおよび書き込み可能であることです。重要なポイント: コンテナ = イメージ + 読み取り/書き込みレイヤーであり、コンテナの定義ではコンテナを実行するかどうかについては言及されていません。

今日は、原則とその根底にある原則を脇に置いておきましょう。 Docker におけるコンテナとイメージの違いを簡単に説明します。

初心者にとって、Docker、特にイメージとコンテナを使い始めるのは少し混乱するかもしれません。実際、イメージとコンテナの関係は 1 対多であることがわかります。

次の図は間違ったデモンストレーションを示しています。なぜ間違っているのでしょうか? 1つのイメージで3つのコンテナを起動することはできますが、これらの3つのコンテナの名前は同じにすることはできません。

正しい例 (これと上の図の違いは何かと尋ねる人もいます。上の図では、名前は同じです: container = container = container。ここでは、名前は container a != container b != container c です)

つまり、1 つのイメージで 3 つのコンテナを実行できます。イメージはイメージ ウェアハウス内の他のユーザーによってパッケージ化されており、ダウンロードするだけで済みます。ただし、イメージをダウンロードするときにバージョン番号を指定する必要があります。 JDK をダウンロードするときと同様に、公式 Web サイトではデフォルトで最新バージョンが提供されます。古いバージョンをダウンロードする場合は、対応するバージョンを入力する必要があります。

イメージはコンテナとしてどのように実行されますか?たとえば、msql の場合、mysql イメージをダウンロードします。

docker プル mysql

イメージを実行して、mysql_zhangsan データベース (Zhang San 専用のデータベース) を生成します。

[root@localhost ~]# docker run ‐p 3306:3306 ‐‐name mysql_zhangsan ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql 
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434

-p 3306:3306 : ポートマッピング

--name mysql_zhangsan: このコンテナに mysql_zhangsan という名前を付けます (この名前は一意であり、重複できません)

-e MYSQL_ROOT_PASSWORD=123456: このデータベースにログインするためのアカウントはROOTで、パスワードは123456です

-d は、先ほどダウンロードした mysql イメージに基づいて作成されます。

イメージを実行してmysql_lisiデータベース(Li Si専用のデータベース)を生成します。

[root@localhost ~]# docker run ‐p 3307:3307 ‐‐name mysql_lisi ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql 
ms10e4bcfdsf0f61cbad43898de71d366117d120dfs9db651844c0e73863b9968

-p 3307:3307: ポート マッピング (ポート 3306 は Zhang San のデータベースによって占有されているため使用できません)

--name mysql_lisi : このコンテナに mysql_lisi という名前を付けます (この名前は一意であり、上記の mysql_zhangsan と重複することはできません)

-e MYSQL_ROOT_PASSWORD=123456: このデータベースにログインするためのアカウントも ROOT で、パスワードも 123456 です。

-d は、先ほどダウンロードした mysql イメージに基づいて作成されます。

この時点で、1 つのイメージから 2 つの異なるコンテナーが正常に作成されました。このようにして、コンピューター上で 2 つの mysql を実行できます。別の MySQL コンテナを開きたい場合、ポートと名前が異なっている限り、取得した MySQL イメージに基づいてコンテナを作成できます。

上記は、dockerにおけるコンテナとイメージの違いについての詳しい内容です。dockerコンテナとイメージの違いについての詳細は、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • Docker 実践: 新しいイメージからコンテナを起動するときのエラー解決
  • Docker のデフォルトイメージとコンテナの保存場所を変更する方法
  • Docker でイメージコンテナの保存ディレクトリを変更する方法
  • CentOS 7 で Docker のデフォルトイメージとコンテナの場所を変更する
  • 一般的な Docker コマンドの概要: インストール、ミラーリング、基本的なコンテナ操作
  • Docker のヒント: Docker コンテナとイメージの削除

<<:  美しい FLASH ウェブサイト デザイン例 50 選

>>:  フロントエンドのパフォーマンス最適化を学習するための準備として、HTML ページのレンダリング プロセスを理解する (続き)

推薦する

nginx+FastDFS を使ってファイル管理システムを段階的に構築する

目次1. FastDFS の概要1. はじめに2. FastDFSストレージ戦略3. FastDFS...

Reactでのこのリファレンスの詳細な説明

目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...

JavaScript における Promise の詳細な説明

目次Promise の基本的な使用法: 1. Promiseオブジェクトを作成する2. プロミス方式...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

Macシステムをインストールした後にVMWareがフルスクリーンで表示できない問題を解決する

システム: VMTOOLs ダウンロード:リンク: https://pan.baidu.com/s/...

aタグのname属性とid属性を使用してページ内を移動する方法

以前はaタグのname属性を使ってジャンプする方法しか知らなかったのですが、idも使えることを今日知...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

NodeJSのモジュール性に関する詳細な説明

目次1. はじめに2. 本文2.1 モジュールとは何ですか? 2.2 解決2.3、require.r...

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

JavaScript データ プロキシとイベントの詳細な分析

目次データブローカーとイベントObject.defineProperty メソッドのレビューデータブ...

MySql ファジークエリ JSON キーワード取得ソリューションの例

目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...

nginx のインストールが完了した後に PHP を解析できない問題の解決方法

目次方法1方法2 nginxをインストールした後、PHPコードを解析できないことがわかりました。解決...

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...