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 ページのレンダリング プロセスを理解する (続き)

推薦する

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

MySQLトリガーの概念、原理、使用法の詳細な説明

この記事では、例を使用して、MySQL トリガーの概念、原則、および使用方法を説明します。ご参考まで...

Vue3 AST パーサー - ソースコード分析

目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...

Dockerプライベートウェアハウスの構築とインターフェース管理の詳細な説明

1. レジストリについて公式 Docker ハブは、パブリックイメージを管理するのに適した場所です。...

3列レイアウトを実現するCSS3フレキシブルボックスフレックス

タイトルの通り、高さは既知で、左と右の列の幅は 300 ピクセル、中央は適応型です。弾性ボックス自体...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...

Node.js における npx コマンドの使用法とシナリオ分析

npx 使用チュートリアル今晩、 Vue-Cli勉強していたところ、ふと最新の@4.xxバージョンを...

データ型の判断における js typeof と instanceof の違いと、その開発と使用について

目次1. typeof演算子2. インスタンスオブ演算子3. typeof と instanceof...

Oracle と MySQL の高可用性ソリューションの比較分析

Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...

Linux C++ マルチスレッド同期の非常に詳細な説明

目次1. ミューテックス1. ミューテックスの初期化2. ミューテックスロックの関連特性と分類3. ...

Vue の長いリストをすばやく読み込む方法

目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...

Linux で MySQL のデフォルト エンコーディングを変更する方法

開発プロセス中に、MySQL データベースを復元した後にデータベース データに文字化けが発生した場合...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

MySQL インデックスの効率的な使用ガイド

序文ほとんどの方がMySQLとインデックスを使用したことがあると思いますが、適切なインデックスを作成...

Dockerコンテナを介してランプアーキテクチャを構築するプロセス

目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...