Docker学习(三)-----Docker镜像常用命令
六.Docker鏡像
鏡像是Docker的三大組件之一
Docker運(yùn)行容器前需要本地存在對(duì)應(yīng)的鏡像,如果本地不存,Docker會(huì)從鏡像倉(cāng)庫(kù)下載
6.1Docker獲取鏡像
6.1.1查找鏡像
我們可以從Docker Hub網(wǎng)站來(lái)搜索鏡像,Docker Hub網(wǎng)址為:
https://hub.docker.com/
我們也可以使用docker search命令來(lái)搜索鏡像,比如我們需要一個(gè)tomcat的鏡像來(lái)作為我們的web服務(wù),我們可以通過(guò)docker search命令搜索tomcat來(lái)尋找適合我們的鏡像
docker search --help
docker search tomcat
可以加以下參數(shù)
-f ,根據(jù)提供的條件過(guò)濾器輸出
--format 用G模板打印出漂亮的搜索結(jié)果
--limit 搜索結(jié)果的最大數(shù)量(默認(rèn)值為25)
--no-trunc 不要截?cái)噍敵?
6.1.2 獲取鏡像
從Docker鏡像倉(cāng)庫(kù)獲取鏡像的命令是docker pull其命令格式為:
docker pull [選項(xiàng)] [Docker Registey 地址[:端口號(hào)]/] 倉(cāng)庫(kù)名[:標(biāo)簽]
具體的選項(xiàng)可以用過(guò)docker pull --help命令看到,這里我們說(shuō)一下鏡像名稱(chēng)的格式
- Docker 鏡像倉(cāng)庫(kù)地址:地址的格式一般是 <域名/IP>[:端口號(hào)],默認(rèn)地址是Docker Hub
- 倉(cāng)庫(kù)名:這里的倉(cāng)庫(kù)名是兩段式名稱(chēng),即<用戶名>/<軟件名>.對(duì)于Docker Hub,如果不給出用戶名,則默認(rèn)位library,也就是官方鏡像
我們需要一個(gè)tomcat的鏡像來(lái)作為我們的web服務(wù),通過(guò)docker pull獲取鏡像
docker pull tomcat:版本號(hào) //不寫(xiě):版本號(hào) 代表laster版本
6.2Docker列出鏡像
要想列出已經(jīng)下載的鏡像,可以使用docker image-ls命令
docker images //docker image ls
列表包含了倉(cāng)庫(kù)名,標(biāo)簽,鏡像ID,創(chuàng)建時(shí)間以及所占用的空間
其中倉(cāng)庫(kù)名,標(biāo)簽在之前的基礎(chǔ)概念已經(jīng)介紹過(guò)了,鏡像ID則是鏡像的唯一標(biāo)識(shí),一個(gè)鏡像可以對(duì)應(yīng)多個(gè)標(biāo)簽,因此,如果擁有相同的ID,因?yàn)樗鼈儗?duì)應(yīng)的是同一個(gè)鏡像
如果仔細(xì)觀察,會(huì)注意到,這里標(biāo)識(shí)的所占空間和在Docker Hub上看到的鏡像大小不同,這是因?yàn)镈ocker Hub中顯示的體積是壓縮后的體積。在鏡像下載和上傳過(guò)程中鏡像是保持著壓縮狀態(tài)的,因此Docker Hub所顯示的大小是網(wǎng)絡(luò)傳輸中更關(guān)心的流量大小。而docker image ls顯示的是鏡像下載到本地后,展開(kāi)的大小,準(zhǔn)確說(shuō),是展開(kāi)后的各層所占空間的總和,因?yàn)殓R像到本地后,查看空間的時(shí)候,更關(guān)心的是本地磁盤(pán)空間占用的大小。
另外一個(gè)需要注意的問(wèn)題是,docker image ls列表中的鏡像體積總和并非是所有鏡像實(shí)際硬盤(pán)消耗。由于Docker鏡像是多層存儲(chǔ)結(jié)構(gòu),并且可以繼承,復(fù)用,因此不同鏡像可能會(huì)因?yàn)槭褂孟嗤幕A(chǔ)鏡像,從而擁有共同的層,由于Docker使用Union FS,相同的層只需要保存一份即可,因此實(shí)際鏡像硬盤(pán)占用空間很可能要比這個(gè)列表鏡像大小的總和要小的多
虛懸鏡像
鏡像列表中,還可以看到一特殊的鏡像,這個(gè)鏡像既沒(méi)有倉(cāng)庫(kù)名,也沒(méi)有標(biāo)簽,均為<none>
docker image prune
6.3舉例說(shuō)明
6.3.1安裝tomcat
docker pull tomcat
6.3.2安裝nginx
docker pull nginx:laster
6.3.3列出docker鏡像
tomcat和nginx就已經(jīng)在里面了
docker images
6.3.4安裝指定的tomcat版本
docker pull tomcat:8
這里下載的8版本有部分是和新版一樣的內(nèi)容,所以應(yīng)該就是不直接下載了,直接從那個(gè)倉(cāng)庫(kù)里復(fù)用了,個(gè)人分析
6.3.5再次列出docker鏡像
docker images
注:這里說(shuō)一下tomcat8和tomcat的latest版本所占空間大小是小于672MB+680MB的,因?yàn)樗麄z中的代碼是有共用的。真實(shí)所占空間可能就tomcat8(400MB)+680MB,不懂的話請(qǐng)忽略跳過(guò)
6.4Docker刪除本地鏡像
docker image rm [選項(xiàng)] <鏡像1> [<鏡像2>...]
注:用ID,鏡像名,摘要?jiǎng)h除鏡像
其中,<鏡像>可以是鏡像短ID,鏡像長(zhǎng)ID,鏡像名或者鏡像摘要。
如果要?jiǎng)h除本地的鏡像,可以使用docker image rmi/rm命令
docker image rmi 鏡像ID //常用
注:要?jiǎng)h除鏡像必須確此鏡像目前沒(méi)有被任何容器使用
6.4.1舉例說(shuō)明
安裝nginx 1.20版本
docker pull nginx:1.20
通過(guò)短ID來(lái)刪除nginx 1.20版本
短ID
docker rmi c90c //你這里不要照抄啊,先查看你的nginx的ID是多少,短ID能和其他版本的區(qū)分就行
6.5Docker其他輔助命令
6.5.1查看本地鏡像的IMAGE ID
docker images -q
6.5.2查看一個(gè)鏡像的制作歷程
docker history 鏡像名稱(chēng)
6.6Docker保存鏡像
備份本地倉(cāng)庫(kù)的鏡像
6.6.1用save子命令將本地倉(cāng)庫(kù)的鏡像保存當(dāng)前目錄下
docker save -o tomcat.li.tar 鏡像名稱(chēng)
6.6.2將本地目錄下的鏡像備份文件導(dǎo)入本地Docker倉(cāng)庫(kù)
# 方式一(不輸出詳細(xì)信息)
docker load -i tomcat.li.tar
# 方式二(輸出詳細(xì)信息)
docker load < tomcat.li.tar
總結(jié)
以上是生活随笔為你收集整理的Docker学习(三)-----Docker镜像常用命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 判断两个树是否相等和判断tree1是否包
- 下一篇: 计算最长公共子序列