翻譯太亂:docker的倉庫、鏡像、鏡像倉庫你都弄清楚了嗎?

spbdev 發佈 2024-04-27T02:13:19.806103+00:00

附上官方文檔的英文原文:A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, and Docker is configured to look for images on Docker Hub by default. You can even run your own private registry.

docker的一些術語翻譯很亂,比如Image,叫鏡像,Mirror也叫鏡像,於是很容易就亂套了。

那麼你確定你都弄清楚了docker涉及的這些概念了嗎?往下看:

1、Image

中文叫「鏡像」,這個大家估計都清楚,通俗的說就是Docker生成的二進位文件。


2、Repository

中文叫「倉庫」,但另一個術語Registry也往往叫倉庫,這就很凌亂了。其實Repository表示的是不同tag的同一類Image的集合,比如我們說nginx這個鏡像,可以有latest、1.23.3等tag(或者叫版本),那麼這些不同tag的nginx,就組成了一個Repository。這一點我們可以通過查看鏡像來佐證,如下圖:

注意Repository也可以是帶域名埠的,如果不做別的配置,你拉取鏡像的時候是從別的地方拉取的,那就看到的鏡像的Repository就是帶域名和埠的完整名稱。

此外,在一些提供鏡像服務的地方,例如阿里雲,裡面可以自己創建倉庫,其實創建的也是這個Repository,比如你創建了一個叫做MyRep的倉庫,那麼你的鏡像就只能命名為MyRep:1.0.0這種才能上傳,即:只能上傳不同tag的鏡像。


3、Namespace

命名空間,簡單說就是管理一組Repository的,通常用公司或者組織名稱作為Namespace。舉例來說,tomcat和httpd都是Apache這個組織的產品,那麼apache如果要出鏡像,就可以用apache作為Namespace,tomcat和httpd分別是兩個Repository(只是舉例,不要對號入座),有點類似maven裡面的group的感覺。具體到實際使用,就是拉取的時候要用docker pull apache/tomcat而不是Docker pull tomcat。這個貌似是這幾年才出現的,不太確定,反正早期沒怎麼涉及這個概念,官網的一些官方鏡像基本也沒有Namespace,但實際跟蹤拉取路徑會發現沒有Namespace的鏡像都被劃分到library這個Namespace下了。


4、Registry

這個一般也稱作倉庫,但其實會導致混淆,尤其剛接觸Docker不久,很容易混淆。我個人認為這個叫做鏡像中心,或者鏡像市場,比較容易理解一些,簡單說就是提供鏡像上傳下載服務的地方,類似於手機app的市場。官方的Registry就是Docker Hub。附上官方文檔的英文原文:

A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, and Docker is configured to look for images on Docker Hub by default. You can even run your own private registry.


5、Mirror

從docker hub拉取鏡像往往很慢,所以國內就有docker hub的鏡像站,內容跟docker hub保持同步,但拉取速度就快多了。這類鏡像站我們用的時候往往也叫鏡像倉庫,實際上就是指Registry Mirrors,而不是Repository Mirrors。比如docker的鏡像配置:

關鍵字: