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

ブログ    

推薦する

小さな三角形の実装コードを含む CSS ナビゲーション バー メニュー

多くの Web ページにはナビゲーション バーに小さな三角形があり、この機能を実装するのは実は非常に...

Raspberry PiにDockerをインストールする方法

Raspberry Pi は ARM アーキテクチャをベースとしているため、Docker のインスト...

MySQL インデックスのクイックガイド

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

Linux でユーザーにルート権限を追加する方法の概要

1. ユーザーを追加します。まず、adduser コマンドを使用して共通ユーザーを追加します。コマン...

CSSはリストのスタイルを設定し、ナビゲーションメニューの実装コードを作成します。

1. リストシンボルを設定するlist-style-type: attribute; //リストの...

Dockerコンテナのk8sデプロイメントの実装

環境: (docker、k8s クラスター)、前回 docker で起動した Java プログラムの...

CentOS7 で yum ソースをインストールし、コマンド rz と sz をアップロードおよびダウンロードする方法 (画像付き)

** CentOS7 で yum ソースをインストールし、rz および sz コマンドをアップロー...

Ajax の JavaScript ソリューションにおける parsererror エラー ケースの詳細な説明

ajax の parsererror エラー (バックグラウンドからフロントエンドに送信される js...

JavaScript プログラムのループ構造の詳細な説明

目次構造を選択ループ構造その間…しながらforループ…のために…で…の…のためにまとめループの終了壊...

CSS3 で半透明の背景画像と不透明なコンテンツを実現する方法の例

以前のブログのログインページを作成していたときに、この問題に遭遇しました。突然、透明な背景画像と不透...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

HTML で入力プロンプトのテキスト スタイルを変更するためのサンプル コード

多くのウェブサイトでは、入力ボックスにヒントテキストが表示されています。入力ボックスにヒントテキスト...

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

Linux での透過的巨大ページの使用と無効化の概要

導入コンピューティングのニーズが拡大し続けるにつれて、アプリケーションのメモリに対する需要も増加して...

CSS ハート型読み込みアニメーションのソースコードの実装

さっそく、コードをお見せしましょう。コードは非常にシンプルなので、勉強すれば理解できるようになります...