全面易懂的Docker指令大全

映像檔基礎

映像檔是Docker的靈魂,任何Container都必須從一個映像檔來建立。標準的Docker映像檔包括了映像檔名稱,以及唯一的映像檔id。我們在這一小節先來看映像檔的基礎。

存放Docker映像檔的地方

存放Docker映像檔的地方稱之為一個Docker Registry。每個Docker Registry都有一個網址。當然每個Registry不一定只有一台伺服器,其存放方式屬於系統底層,這我們管不著。一般Docker Registry的來源有:

  • 官方的Docker Hub:其上有數十萬個Docker映像檔,也是以github的概念建立而成的。我們在使用Docker時,預設的下載來源就是這裏。
  • 非官方的公開Docker Registry:如果你要從這些地方下載,就必須在下載時指定完整的位址名稱,也可能需要該網站的認證金鑰,或是在Docker執行的設定檔中先設定好,稍後再談。
  • 自建私有的Docker Registry:公司內部可以建立私有的Registry以保證不會用到來源不明的映像檔。我們在本書實作的地方會有完整架設步驟。

Docker Hub的個人映像檔名稱

Docker是公開的映像檔集散中心,上面有不同的使用者,建立不同的倉庫,其中放了不同的映像檔。上面粗體的字,即映像檔名稱的組成。標準的Docker Hub的個人映像檔名稱格式為:

<user name>/<repo name>:<tag name>

joshhu/webdemo:ubuntu14

說明如下:

  • user name:使用者名稱。在Docker Hub上每個使用者都有一個獨立的名稱,這是Docker Hub上的最大單位。
  • repo name:倉庫名稱。在Docker Hub上的每一個使用者,都可以建立自己的倉庫,倉庫中可以放多個映像檔。
  • tag name:要分辨同一個倉庫中的不同映像檔,就要用tag name來區分。
    • 如果該倉庫中只有一個映像檔,則tag name可以省略。
    • 如果該倉庫中有多個映像檔,在沒有指定tag name時,以最新的一個為主。
    • 同一個映像檔可以有多個tag name,可看做是別名。可以從相同的映像檔ID看出來。

映像檔 ID用來分別映像檔,注意ubuntu:14.10ubuntu:utopicubuntu:utopic-20150319三個映像檔 ID一樣,是同一個映像檔。

Docker Hub上大公司的官方映像檔

主要的Linux發佈商、平台供應商、資料庫供應商,服務供應商等,他們在Docker Hub上也有自己的官方映像檔。這些公司的映像檔格式和一般私人的不同,他們應該是較大牌,因此只有repo nametag name,而沒有user name。格式如下:

apache:latest
ubuntu:trusty

大公司的官方映像檔tag name通常用來標記來自同一個repo的不同映像檔。例如 ubuntu 倉庫中有多個映像檔,通過 TAG 來區分發行版本,例如 12.10、13.04、14.04、14.10 等。但最常用的還是用官方名稱,如trusypreciseutopic來作為TAG。

如果不指定tag name,直接就下載最新的版本,有些廠商的映像檔甚至連tag name都沒有。

此外,這種官方版本映像檔其使用方式、限制及tag的別名也和一般的映像檔完全一樣。