Docker(一) -- 鏡像Images

一:簡要概述

Docker目前主流虛擬容器化技術代表,吹逼不會Docker那簡直就像是瘋狂原始人,太LOW!!認識使用Docker沒必要理解那些晦澀的概念,隨着使用深入領悟它的好處就夠了。Docker生態中接觸最多的其實就是Docker Engine,典型的C/S架構。包括後續文章將會分析的四大組件鏡像、容器、網絡、數據卷都屬於Docker daemon管理,命令交互都屬於Docker cli部分,Docker daemon與Docker cli組成Docker Engine
在這裏插入圖片描述

二:鏡像簡介

鏡像是整個Docker生態的基礎,可以將其理解爲應用程序及其相關依賴的基礎文件系統,文件中定義了整個應用與其相關依賴的數據信息等

2.1 鏡像層

Docker利用AUFS作爲底層的文件系統實現,其最重要的一個特點就是增量式鏡像文件結構。每次Docker都會把修改的部分作爲一個鏡像層,所有鏡像層及其以下的鏡像層都可以組成一個完整的應用鏡像
在這裏插入圖片描述

2.2 編碼與共享

每個鏡像層都有64位的唯一哈希編碼,這就給鏡像層共用創造了條件。比如ZK的鏡像與RabbitMQ鏡像都需要JDK鏡像層,當ZK鏡像拉取後再拉取MQ鏡像時發現JDK鏡像層已經具備,這時候會共用,而不是再拉取一份。鏡像層的共用達到 1 + 1 < 2的效果,當然刪除鏡像時也不會刪除共用鏡像層
在這裏插入圖片描述

三:鏡像運用

3.1 鏡像倉庫

Java中使用Maven管理依賴會有Maven倉庫,Docker中使用鏡像當然會有鏡像倉庫。Maven的中央倉庫國內用起來基本是痛苦不堪,Docker的鏡像倉庫同理,所以在操作前咱配置國內的鏡像倉庫

// daemon.json文件不存在則創建
vim /etc/docker/daemon.json
// 增加如下配置
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://w9o4etz3.mirror.aliyuncs.com"
    ]
}
// 保存後重啓
systemctl restart docker
// 查看鏡像源
docker info

在這裏插入圖片描述

3.2 鏡像命名

首先本地鏡像可以通過命令docker images查看
在這裏插入圖片描述

  • REPOSITORY描述鏡像內容,很多時候採用鏡像應用名稱進行命名
  • TAG理解爲標籤即可,描述版本亦或是某個應用中部分功能
  • IMAGE ID唯一標識,前面說是32位哈希碼,但是爲了方便展示看截取前12位
  • CREATED創建時間
  • SIZE內存大小
 命名規則爲:namespace/REPOSITORY:TAG(其中namespace可以省略,用於描述鏡像提供維護者)

某個鏡像的名稱不是很符合要求怎麼辦?鏡像命名的修改涉及到如下命令:注意這樣操作的時候是生成一個新的鏡像

docker tag 修改名稱鏡像 鏡像修改後的名稱

在這裏插入圖片描述

3.3 鏡像查詢與拉取

比如我想從倉庫拉取一個Rdis鏡像,查詢存在的鏡像實例可以用如下命令:其中STARS表示熱度/關注度、OFFICIAL表示官方維護鏡像,仔細看看他的命名,除了官方維護的鏡像之外其餘的命名規則都符合上一小節所述

// 查詢倉庫鏡像
docker search redis

在這裏插入圖片描述
倉庫中鏡像拉取到本地使用命令docker pull ,這個命令使用的時候需要注意,如果這時候不指定版本則默認拉取官方維護的latest最新版本,當然如果有特殊情況,則需要完整的鏡像名稱定位。如下圖所示,確實可以看到是一層一層鏡像組成拉取
在這裏插入圖片描述

3.4 鏡像刪除

鏡像刪除的命令就是docker rmi比較簡單,但是命令參數卻是這節重點。docker中每個鏡像、容器都有唯一標識的32位哈希碼,但是爲了方便直接展示12位。所以在操作鏡像亦或是容器時不僅僅可以使用它們的名稱,並且還可以使用它們的ID。那你說12位的ID輸入不是很麻煩麼,但是記住,只要你輸入的ID可以確定唯一鏡像或是容器即可,不需要完整
在這裏插入圖片描述

3.5 鏡像詳情

docker images命令羅列的都是比較表面的信息,如果想查看鏡像內部的一些信息可以使用docker inspect,當然這個命令不僅僅是對鏡像有效,對所有Docker中的對象都是有效的,如容器等

3.6 保存 / 加載 鏡像

Docker中的所有鏡像都是交給Docker進行管理,分佈式環境部署時常涉及到節點遷移工作,此時即可將鏡像保存到本地,方便將鏡像直接遷移到另外服務器的Docker環境

// 鏡像名稱可以多個,批量遷移
docker save -o 保存鏡像路徑 鏡像名稱

在這裏插入圖片描述
上述步驟之後的鏡像已經保存到本地,此時可以測試使用本機將其加載到Docker環境中

docker load -i 鏡像打包的本地tar包

在這裏插入圖片描述

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