當運作容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載下傳,預設是從 Docker Hub 公共鏡像源下載下傳。
下面我們來學習:
1、管理和使用本地 Docker 主機鏡像
2、建立鏡像
我們可以使用 docker images 來列出本地主機上的鏡像。
各個選項說明:
REPOSITORY:表示鏡像的倉庫源
TAG:鏡像的标簽
IMAGE ID:鏡像ID
CREATED:鏡像建立時間
SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如 ubuntu 倉庫源裡,有 15.10、14.04 等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
是以,我們如果要使用版本為15.10的ubuntu系統鏡像來運作容器時,指令如下:
參數說明:
-i: 互動式操作。
-t: 終端。
ubuntu:15.10: 這是指用 ubuntu 15.10 版本鏡像為基礎來啟動容器。
/bin/bash:放在鏡像名後的是指令,這裡我們希望有個互動式 Shell,是以用的是 /bin/bash。
如果要使用版本為 14.04 的 ubuntu 系統鏡像來運作容器時,指令如下:
如果你不指定一個鏡像的版本标簽,例如你隻使用 ubuntu,docker 将預設使用 ubuntu:latest 鏡像。
當我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載下傳這個鏡像。如果我們想預先下載下傳這個鏡像,我們可以使用 docker pull 指令來下載下傳它。
下載下傳完成後,我們可以直接使用這個鏡像來運作容器。
我們可以從 Docker Hub 網站來搜尋鏡像,Docker Hub 網址為:
https://hub.docker.com/
我們也可以使用 docker search 指令來搜尋鏡像。比如我們需要一個 httpd 的鏡像來作為我們的 web 服務。我們可以通過 docker search 指令搜尋 httpd 來尋找适合我們的鏡像。
點選圖檔檢視大圖:

NAME: 鏡像倉庫源的名稱
DESCRIPTION: 鏡像的描述
OFFICIAL: 是否 docker 官方釋出
stars: 類似 Github 裡面的 star,表示點贊、喜歡的意思。
AUTOMATED: 自動建構。
我們決定使用上圖中的 httpd 官方版本的鏡像,使用指令 docker pull 來下載下傳鏡像。
下載下傳完成後,我們就可以使用這個鏡像了。
鏡像删除使用 docker rmi 指令,比如我們删除 hello-world 鏡像:
當我們從 docker 鏡像倉庫中下載下傳的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。
1、從已經建立的容器中更新鏡像,并且送出這個鏡像
2、使用 Dockerfile 指令來建立一個新的鏡像
更新鏡像之前,我們需要使用鏡像來建立一個容器。
在運作的容器内使用 apt-get update 指令進行更新。
在完成操作之後,輸入 exit 指令來退出這個容器。
此時 ID 為 e218edb10161 的容器,是按我們的需求更改的容器。我們可以通過指令 docker commit 來送出容器副本。
各個參數說明:
-m: 送出的描述資訊
-a: 指定鏡像作者
e218edb10161:容器 ID
runoob/ubuntu:v2: 指定要建立的目标鏡像名
我們可以使用 docker images 指令來檢視我們的新鏡像 runoob/ubuntu:v2:
使用我們的新鏡像 runoob/ubuntu 來啟動一個容器
我們使用指令 docker build , 從零開始來建立一個新的鏡像。為此,我們需要建立一個 Dockerfile 檔案,其中包含一組指令來告訴 Docker 如何建構我們的鏡像。
每一個指令都會在鏡像上建立一個新的層,每一個指令的字首都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像内執行指令,安裝了什麼。。。
然後,我們使用 Dockerfile 檔案,通過 docker build 指令來建構一個鏡像。
-t :指定要建立的目标鏡像名
. :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑
使用docker images 檢視建立的鏡像已經在清單中存在,鏡像ID為860c279d2fec
我們可以使用新的鏡像來建立容器
從上面看到新鏡像已經包含我們建立的使用者 runoob。
我們可以使用 docker tag 指令,為鏡像添加一個新的标簽。
docker tag 鏡像ID,這裡是 860c279d2fec ,使用者名稱、鏡像源名(repository name)和新的标簽名(tag)。
使用 docker images 指令可以看到,ID為860c279d2fec的鏡像多一個标簽。