docker容器與映象的區別

天下沒有收費的bug發表於2021-06-08

今天拋開原理,拋開底層。通俗的講解docker中容器與映象的區別。

對於初學者來說,剛剛接觸docker會有點迷,特別是映象與容器。其實我們可以理解映象與容器為一對多的關係。

下圖錯誤的示範,為什麼是錯誤的呢?因為可以通過一個映象確實可以啟動三個容器,但是這個三個容器的名字不能一樣

 

 

 

正確的示例(有人說這和上圖有什麼區別,上圖中是不是名字一樣了  容器=容器=容器 ,這裡的名字是 容器a != 容器b != 容器c ) 

 

 

 

所以我們能通過一個映象,執行出三個容器,映象是別人打包好在映象倉庫的,我們去下載就好了。但是我們下載映象的時候要帶上版本號。就像我們下載一個jdk,官網預設是最新版,如果我們要下載舊版,就要進到對應的版本里面。

一個映象怎麼執行為容器呢?比如msql,我們下載一個mysql映象。

docker pull mysql

 

執行映象,生成mysql_zhangsan資料庫(專門給張三用的資料庫)

[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資料庫(專門給李四用的資料庫)

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

-p 3307:3307 : 埠對映(不能用3306了,因為3306被張三的資料庫佔用了)

--name mysql_lisi : 給這個容器命名為mysql_lisi(這個名字是唯一的,不能和上面的mysql_zhangsan重複)

-e MYSQL_ROOT_PASSWORD=123456 : 這個資料庫登陸的賬號也為ROOT 密碼也為123456

-d 是基於我們剛剛拉下拉的映象mysql進行建立的。

 

到這裡,我們成功通過一個映象,建立了兩個不同的容器。這樣,我們的電腦上就能執行兩個mysql了。如果我們要再開一個mysql容器,只要埠不同,名稱不同,最後還是基於我們拉的mysql映象就可以進行建立了。

相關文章