Docker學習之Image(鏡像)(2)

咱們知道Image(鏡像)是Docker的三大組件之一,Docker 運行容器前須要本地存在對應的鏡像,若是本地不存在該鏡像,Docker 會從鏡像倉庫下載該鏡像。接下來先看看,怎樣去獲取鏡像。

獲取鏡像

DockerHub 上有大量的高質量的鏡像能夠用,這裏咱們就說一下怎麼獲取這些鏡像。
從 Docker 鏡像倉庫獲取鏡像的命令是 docker pull 。其命令格式爲:docker

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]

具體的選項能夠經過 docker pull --help 命令看到,這裏咱們說一下鏡像名稱的格式。shell

  • Docker 鏡像倉庫地址:地址的格式通常是 <域名/IP>[:端口號] 。默認地址是 Docker Hub。
  • 倉庫名:如以前所說,這裏的倉庫名是兩段式名稱,即 <用戶名>/<軟件名> 。對於 Docker Hub,若是不給出用戶名,則默認爲 library ,也就是官方鏡像。

先看一個例子,這裏拉取ubuntu的一個鏡像:ubuntu

root@huangche-PC:/# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
6abc03819f3e: Pull complete 
05731e63f211: Pull complete 
0bd67c50d6be: Pull complete 
Digest: sha256:f08638ec7ddc90065187e7eabdfac3c96e5ff0f6b2f1762cf31a4f49b53000a5
Status: Downloaded newer image for ubuntu:18.04

Docker拉取ubuntu鏡像

上面的命令中沒有給出 Docker 鏡像倉庫地址,所以將會從 Docker Hub 獲取鏡像。而鏡像名稱是 ubuntu:18.04 ,所以將會獲取官方鏡像 library/ubuntu倉庫中標籤爲 18.04 的鏡像。其中library表示組。bash

從下載過程當中能夠看到咱們以前說起的分層存儲的概念,鏡像是由多層存儲所構成。下載也是一層層的去下載,並不是單一文件。下載過程當中給出了每一層的 ID 的前 12 位。如:6abc03819f3e: Pull complete ,而且下載結束後,給出該鏡像完整的 sha256 的摘要,以確保下載一致性。spa

運行

經過docker pull 命令獲取到鏡像之後,就能夠以這個鏡像爲基礎啓動並運行一個容器。以上面的ubuntu:18.04 爲例,若是咱們打算啓動裏面的 bash 而且進行交互式操做的話,能夠執行下面的命令。code

docker run -it --rm \
ubuntu:18.04 \
bash

運行ubuntu容器
從上圖就能夠看出,咱們進入了一個以ubuntu:18.04鏡像爲基礎的容器環境了(其實也就是進入了一個ubuntu系統),也能夠進行shell操做了,能夠經過ls -al查看下:get

經過bash進入ubuntu系統

經過 cat /etc/os-release來查看下該系統的一些基本信息:域名

ubuntu基本信息查看
再看下it

docker run -it --rm \
ubuntu:18.04 \
bash

這個命令的意思表示啥class

  • it :這是兩個參數,一個是 -i :交互式操做,一個是 -t 終端。咱們這裏打算進入 bash 執行一些命令並查看返回結果,所以咱們須要交互式終端。
  • rm :這個參數是說容器退出後隨之將其刪除。默認狀況下,爲了排障需求,退出的容器並不會當即刪除,除非手動 docker rm 。咱們這裏只是隨便執行個命令,看看結果,不須要排障和保留結果,所以使用 --rm 能夠避免浪費空間。ubuntu:18.04 :這是指用 ubuntu:18.04 鏡像爲基礎來啓動容器。
  • bash :放在鏡像名後的是 命令,這裏咱們但願有個交互式 Shell,所以用的是 bash 。

最後咱們經過 exit 退出了這個容器。

列出鏡像

在使用Docker的過程當中,不免須要查看下本地已經存在的可以使用的鏡像的一些信息,這時候可使用docker image ls命令來進行查看:

列表包含了 倉庫名 、 標籤 、 鏡像 ID 、 建立時間 以及 所佔用的空間 。
其中倉庫名、標籤在以前有提到過。鏡像 ID 則是鏡像的惟一標識,一個鏡像能夠對應多個 標籤。所以,在上面的例子中,咱們能夠看到ubuntu:18.04 和 ubuntu:latest 擁有相同的 ID,由於它們對應的是同一個鏡像。

刪除本地鏡像

對於用不到的鏡像,能夠經過docker image rm命令進行刪除操做,格式爲:

docker image rm [選項] <鏡像1> [<鏡像2> ...]

其中, <鏡像> 能夠是 鏡像短 ID 、 鏡像長 ID 、 鏡像名 或者 鏡像摘要 。

本地已有鏡像

看到圖中列出了三個鏡像,接下來對ngnix這個鏡像進行刪除操做:

根據id刪除鏡像

咱們能夠用鏡像的完整 ID,也稱爲 長 ID ,來刪除鏡像。使用腳本的時候可能會用長 ID,可是人工輸入就太累了,因此更多的時候是用 短 ID 來刪除鏡像。 docker image ls 默認列出的就已是短 ID 了,通常取前3個字符以上,只要足夠區分於別的鏡像就能夠了。

相關文章
相關標籤/搜索