Docker入門與實戰(zhàn)
二.Docker鏡像的使用
1.獲取鏡像
命令:docker [image] pull image-name[:tag]
說明:
name為鏡像倉庫名稱,嚴格來說,該name應(yīng)該由注冊服務(wù)器地址+鏡像倉庫名稱組成窗怒,這樣做可以避免不同倉庫(注冊服務(wù)器)下的鏡像名稱沖突的問 題修肠,如果該注冊服務(wù)器地址省略,則默認從Docker官方注冊服務(wù)器(即registry.hub.docker.com)拉取戒祠。
tag為鏡像的標簽(大多數(shù)為版本信息),若省略,則默認拉取最新版本的鏡像
e.g. docker pull ubuntu:18.04
其他附加參數(shù):
-a或--all-tags=true|false : 是否獲取倉庫中的全部鏡像,默認為false鸣戴。
--disable-content-trust : 取消鏡像的內(nèi)容校驗胯甩,默認為true昧廷。
--registry-mirror=鏡像倉庫地址 : 指定鏡像代理服務(wù)地址
--no-trunc=true|false : 對輸出結(jié)果中太長的部分是否采取截斷操作,默認為true
-f或--filter=[] : 過濾列出的鏡像
--format="你期望的數(shù)據(jù)輸出格式" :控制輸出格式偎箫,例如木柬,你可以在格式字符串中以.ID代表輸出的ID信息,以.Repository代表倉庫信息等
2.查看鏡像信息
命令 : docker images 或 docker image ls
說明 : 列出本地主機上已有的鏡像的基本信息
列表字段說明:
repository : 來源倉庫
tag : 鏡像的標簽信息(大多數(shù)為鏡像版本信息)淹办,可用于標識來自于同一倉庫的不同標簽(版本)的鏡像
image id : 鏡像的唯一標識眉枕,具有唯一性
created : 鏡像最后的更新時間
size : 鏡像的大小
一些可選參數(shù):
-a或--all=true|false : 是否列出所有的鏡像文件(包括臨時的鏡像文件),默認為false。
-q或--quiet=true|false :是否僅輸出ID信息,默認為false速挑。
3.更改鏡像標簽信息(Tag)
命令 :docker tag 原鏡像倉庫名稱:原鏡像標簽信息 自定義鏡像倉庫名稱:自定義鏡像標簽信息
說明 :類似于給目標鏡像起了一個別名谤牡,類似于Linux系統(tǒng)中的鏈接文件的作用
e.g. docker tag hello-world:latest hello-world:promax
4.查看鏡像的詳細信息
命令 :docker [image] inspect 鏡像倉庫名稱:鏡像標簽信息
說明 :能夠獲取到目標鏡像的制作者,適應(yīng)架構(gòu)姥宝,各層的數(shù)字摘要等信息翅萤。由于返回的信息為JSON格式,因此腊满,我們可以通過追加 -f JSON中的某個鍵 以進一步查看某一項的信息断序。
e.g. :? docker image inspect nginx:latest
e.g. : docker image inspect -f {{".Id"}} nginx:latest
(此處省略500字...)
5.查看鏡像歷史
命令 :docker history 鏡像倉庫名稱:鏡像標簽信息
說明 :查看鏡像各層的創(chuàng)建信息
e.g. :docker history nginx:latest
6.搜索鏡像
命令 :docker search 鏡像倉庫名稱
e.g. : docker search redis
其他參數(shù)說明:
-f或--filter=[] : 過濾列出的鏡像
--format="你期望的數(shù)據(jù)輸出格式" :控制輸出格式,例如糜烹,你可以在格式字符串中以.ID代表輸出的ID信息违诗,以.Repository代表倉庫信息等
--limit 輸出結(jié)果個數(shù) :限制輸結(jié)果的個數(shù),默認輸出25個符合條件的結(jié)果
--no-trunc : 不截斷輸出結(jié)果的任何部分
7.刪除與清理鏡像
命令:docker rmi image1 image2 image3...或 docker image rm mage1 image2 image3...
說明 :其中的imageN可以是 鏡像倉庫名稱:鏡像標簽信息疮蹦,也可以是鏡像ID
如果刪除的是 鏡像倉庫名稱:鏡像標簽信息诸迟,若該鏡像倉庫在本地存在多個(多個不同版本的同一鏡像),因此刪除其中一個鏡像標簽愕乎,僅僅會刪除該指 向同一鏡像的鏈接阵苇,只有刪除最后一個鏡像標簽的情況下,才會刪除該鏡像所有文件層感论;如果刪除的是鏡像ID绅项,由于不同版本的鏡像所對應(yīng)的鏡像ID 都是相同的,所以比肄,此時將會刪除所有指向該鏡像的不同版本的本地鏡像標簽快耿,同時也會刪除該鏡像的所有文件層。
其他參數(shù)說明:
-f或-force : 強制刪除芳绩,即使有其之上的容器處在運行狀態(tài)
-no-prunc : 不清理未帶標簽的父鏡像
8.清理鏡像
命令 :docker image prune
相關(guān)參數(shù)說明:
-a或--all : 刪除所有無用鏡像掀亥,包括臨時鏡像
-filter filter-expression : 刪除符合過濾器條件的鏡像
-f或-force :強制刪除鏡像,不再進行二次確認
9.創(chuàng)建鏡像
(1)第一種方法:基于已有容器創(chuàng)建:
命令:docker [container] commit containerID [newImageName:newImageTag]
e.g. :
docker commit-m"commit test"-a"Dage"ac0977cebae3 dage_redis:promax
相關(guān)參數(shù)說明:
-a或--author=" " : 作者信息
-c或--change=[] : 提交的時候執(zhí)行dockerfile中的指令
-m或--messag=" " : 提交信息
-p或--pause=true|false : 提交時妥色,當前容器是否暫停運行
(2)第二種方法:基于本地模板創(chuàng)建:
命令 :docker [image] import file|URL|-[respoitory:tag]
(3)第三種方法:基于Dockerfile創(chuàng)建:
命令 :docker [image] build [-t repository:tag]
說明 :Dockerfile是一個文本文件搪花,專門用于描述基于父容器創(chuàng)建某個新鏡像的過程。
10.載入與導(dǎo)出鏡像
(1)載入鏡像
命令 :docker [image] load -i fileURI
e.g. :
docker load-iredis_promax.tar
(2)導(dǎo)出鏡像
命令 :docker [image] save -o outputFilePath repository:tag
e.g.
docker save-ohehehe.tar hello-world:promax
11.上傳鏡像
命令:docker [image] push repository[ :tag] registry_host[ :registry_port]/name:tag
或者:先 docker tag repository:tag name:tag,再 docker push name:tag
說明:默認推送鏡像至Docker官方倉庫嘹害,執(zhí)行上述命令之前撮竿,請先登錄或注冊DockerHub
docker push hello-world:promax hw-pro:promax