天天看點

Docker 鏡像使用

當運作容器時,使用的鏡像如果在本地中不存在,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 來尋找适合我們的鏡像。

點選圖檔檢視大圖:

Docker 鏡像使用

NAME: 鏡像倉庫源的名稱

DESCRIPTION: 鏡像的描述

OFFICIAL: 是否 docker 官方釋出

stars: 類似 Github 裡面的 star,表示點贊、喜歡的意思。

AUTOMATED: 自動建構。

我們決定使用上圖中的 httpd 官方版本的鏡像,使用指令 docker pull 來下載下傳鏡像。

下載下傳完成後,我們就可以使用這個鏡像了。

鏡像删除使用 docker rmi 指令,比如我們删除 hello-world 鏡像:

Docker 鏡像使用

當我們從 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的鏡像多一個标簽。