Docker系列教程01-使用Docker鏡像

docker系列導讀

一文帶你讀懂什麼是docker

Docker安裝部署

10張圖帶你深入理解Docker容器和鏡像

前言

學習Docker,我們需要掌握它的三大核心概念:鏡像容器倉庫

今天先帶大家學習Docker鏡像相關的基礎知識。

Docker鏡像簡介

1、什麼是鏡像?

Docker鏡像是一個只讀的模板。如果讀者之前是VM管理員,則可以把Docker鏡像理解爲VM模板,如果您是一名研發人員,可以將鏡像理解爲(class)。

簡單說,Docker鏡像是一個不包含系統內核而又精簡的操作系統。

例如:一個鏡像可以包含一個基本的 ubuntu 操作系統環境,裏面僅安裝了 Nginx 應用程序。可以把它稱爲Nginx鏡像。

2、鏡像從哪裏來的?

Docker Hub是由Docker公司負責維護的公共註冊中心,包含大量的容器鏡像,Docker工具默認從這個公共鏡像庫下載鏡像。

下載nginx鏡像

鏡像管理命令

我們先列出鏡像相關的命令

1、搜索鏡像

docker search 語法
例如,搜索mysql相關的鏡像,命令如下:

2、下載鏡像

docker pull 語法

通常情況下, 描述一個鏡像需要包括“名稱標籤“信息。

比如下載Ubuntu 18.04系統鏡像,命令如下:

若不指定標籤,則默認會選擇latest標籤。測試如下:

在這裏特別強調下,不要被latest的字面意思“最新的”所誤解了,它只是這個資源庫的擁有者約定這樣,沒有附加作用,更不會自動更新。舉個例子,我可以輕易把一個過時的鏡像打上latest標籤,實驗如下:

# docker images web_repo
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
web_repo              1.0                 2e9f372f03a0        44 seconds ago      2.433 MB
web_repo              latest              2e9f372f03a0        44 seconds ago      2.433 MB
web_repo              0.9                 4986bf8c1536        2 weeks ago         2.433 MB
# docker tag -f web_repo:0.9 web_repo:latest
# docker images web_repo
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
web_repo              1.0                 2e9f372f03a0        About a minute ago   2.433 MB
web_repo              0.9                 4986bf8c1536        2 weeks ago          2.433 MB
web_repo              latest              4986bf8c1536        2 weeks ago          2.43

這裏帶latest標籤的鏡像與0.9版本的鏡像是一樣的,都是兩週前的版本,然而1.0的鏡像是一分鐘以前的。此時帶有latest標籤的鏡像還是最新版本嗎?

3、查看鏡像

1)使用images 命令列出本地鏡像列表

解釋列出的字段信息:

  • REPOSITORY

說明鏡像來自哪個倉庫,比如 ubuntu 表示ubuntu 系列的基礎鏡像

  • TAG

    鏡像的標籤信息,人爲標識鏡像的不同版本

  • IMAGE ID

鏡像的ID,用來唯一標識鏡像,如果兩個鏡像ID相同,表示它們指向同一個鏡像,只是標籤名稱不同而已

  • CREATED

    鏡像最後更新的時間

  • SIZE

    鏡像大小

2)使用inspect命令查看鏡像詳細信息

只展示部分

上圖返回的是一個JSON格式,內容包括鏡像製作者、適應架構、各層的數字摘要等。如果只要其中一項內容時,可使用-f指定,例如,獲取鏡像的創建時間:

3)使用history命令查看鏡像歷史

docker pull 下載鏡像時也我們發現了鏡像文件由多個層組成,可以使用history子命令列出各層的創建信息。例如,查看Ubuntu:18.04鏡像的創建過程,命令如下:

注意:由於CREATED BY部分命令過長,被自動截斷了,可使用--no-trunc選項輸出完整命令。

4、爲鏡像添加標籤

docker tag 語法
爲ubuntu:latest鏡像添加一個新標籤:myubuntu:v1

5、刪除鏡像

docker rmi 語法

1)使用標籤刪除鏡像

[root@qll251 ~]# docker rmi myubuntu:v1
Untagged: myubuntu:v1

當同一個鏡像擁有多個標籤時,docker rmi命令只是刪除該鏡像的一個標籤副本,並不影響鏡像文件。

2)使用鏡像ID刪除鏡像

 docker rmi 命令後跟鏡像ID的前綴即可匹配刪除

如果出現以下情況:

仔細觀察,發現005d2078bdfa這個鏡像id指向了兩個repository,因此無法刪除。

此時我們可以依次刪除該鏡像對應的標籤即可刪除,或者使用-f參數強制刪除,命令如下:

3)清除鏡像

使用Docker一段時間後,系統中可能會遺留一些臨時鏡像文件,以及一些未被使用的鏡像,可以通過docker image prune命令進行清理。

docker image prune 語法

例如, 如下命令會自動清理臨時的遺留鏡像文件層, 最後會提示釋放的存儲空間:

[root@qll251 ~]# docker image prune -f
Total reclaimed space: 1.6 GB

6、存出和載入鏡像

1、存出鏡像

docker save 語法

例如,導出ubuntu:18.04鏡像爲本地文件ubuntu:18.04.tar,代碼如下:

[root@qll251 ~]# docker save -o /data/ubuntu:18.04.tar ubuntu:18.04
[root@qll251 ~]# ls /data
ubuntu:18.04.tar

- o參數:表示導出鏡像到指定的文件中。

2、載入鏡像

可使用docker load將導出的tar文件再次導入到本地鏡像庫。語法格式如下:

docker laod 語法

例如,將ubuntu:18.04.tar文件導入本地鏡像庫,代碼如下:

注意:使用docker load導入的鏡像將保留所有的鏡像歷史記錄和元數據信息。後續會我們會在容器章節中與docker load做對比。

7、上傳鏡像

使用docker push命令默認將鏡像上傳到Docker Hub官方倉庫(需要登錄)。命令格式如下:

docker push 語法

例如,將本地的myubuntu:v1鏡像上傳至官方倉庫。代碼如下:

1、爲 待上傳的鏡像打上標籤
[root@qll251 ~]# docker tag ubuntu:18.04 qinlulu/myubuntu:v1

2、登錄到Docker Hub(沒有賬號的需在官網註冊)
[root@qll251 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: qinlulu
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

3、上傳鏡像
[root@qll251 ~]# docker push qinlulu/myubuntu:v1
The push refers to repository [docker.io/qinlulu/myubuntu]
28ba7458d04b: Pushed
838a37a24627: Pushed
a6ebef4a95c3: Pushed
b7f7d2967507: Pushed
v1: digest: sha256:b58746c8a89938b8c9f5b77de3b8cf1fe78210c696ab03a1442e235eea65d84f size: 1152

Docker Hub官網地址:

https://hub.docker.com

登錄後,驗證鏡像已上傳:

本章命令小結

1、搜索鏡像

docker search mysql

2、下載鏡像

docker pull ubuntu:18.04

3、列出本地鏡像列表

docker images

4、查看鏡像詳細信息

docker inspect ubuntu:18.04

5、查看鏡像歷史信息

docker history ubuntu:18.04

6、爲鏡像添加標籤

docker tag ubuntu:latest myubuntu:v1

7、刪除鏡像

docker rmi myubuntu:v1

8、清除臨時鏡像文件

docker image prune -f

9、存出鏡像

docker save -o ubuntu.tar ubuntu:18.04

10、載入鏡像

docker load -i ubuntu.tar

11、上傳鏡像

docker push qinlulu/myubuntu:v1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章