摘要:實際上,認(rèn)為文本文件都是結(jié)構(gòu)化的,它將每一個輸入行定義為一個記錄,行中的每個字符串定義為一個域段,域和域之間使用分割符分割。
看到一篇“Docker 技巧:刪除 Docker 容器和鏡像”其中提到刪除標(biāo)簽為none的鏡像的方法,其中用到了awk,就去查了下,下面舉例說明:
docker rmi $(docker images | awk "$1 == "" && $2 == " " {print $3}")
很多挺長的指令不明白的時候可以拆成短的去學(xué)習(xí)了解,這里 “$()” 中的語句可以單摘出來:
docker images | awk "$1 == "" && $2 == " " {print $3}"
這條語句又可以看作兩步操作:
docker images:查詢本地鏡像列表;
awk:文本分析工具,這里的 “"$1 == "
為了方便理解,這里再簡化下語句:
docker images | awk "{print $0}" # 返回結(jié)果: REPOSITORY TAG IMAGE ID CREATED SIZE mono/jexus 6.24 1972cdc31613 4 days ago 727.9 MB
然后將結(jié)果與下面的兩個語句進(jìn)行對比
docker images | awk "{print $1}" # 返回結(jié)果: REPOSITORY mono/jexus docker images | awk "{print $3}" # 返回結(jié)果: IMAGE 1972cdc31613
不難看出 “$” 后的參數(shù)分別對應(yīng)的結(jié)果是有規(guī)律的。實際上,awk認(rèn)為文本文件都是結(jié)構(gòu)化的,它將每一個輸入行定義為一個記錄,行中的每個字符串定義為一個域(段),域和域之間使用分割符分割。awk會把每行進(jìn)行一個拆分,用相應(yīng)的命令對拆分出來的“段”進(jìn)行處理。
行工作模式,讀入文件的每一行,會把一行的內(nèi)容,存到$0里;
使用內(nèi)置的變量FS(段的分隔符,默認(rèn)用的是空白字符),分割這一行,把分割出來的每個段存到相應(yīng)的變量$(1-100);
輸出的時候按照內(nèi)置變量OFS(out FS);
讀入下一行繼續(xù)操作;
而"$1 == "
docker rmi $(docker images | awk "$1 == "" && $2 == " " {print $3}")
通過awk可以得到想要的文本,再與docker的其他命令組合可以實現(xiàn)很多有意思的功能,關(guān)于awk更多的信息請參考《Shell腳本之a(chǎn)wk詳解》,這里是備份。關(guān)于Docker的相關(guān)指令可以參照《Docker的學(xué)習(xí)--命令使用詳解》,里面有詳盡的注釋。
另外,如果需要幾個命令組合就可以用$()將命令嵌套起來,如:
# 查詢本地鏡像的ID列表 docker images -q
和
# 根據(jù)鏡像的ID或鏡像的名稱 + 標(biāo)簽刪除鏡像 docker rmi ImageID
組合之后就成了
# 刪除所有的鏡像 docker rmi $(docker images -q)
同樣的,你可以根據(jù)自己的情況將其他的命令進(jìn)行組合,同時用awk對文本進(jìn)行處理可以實現(xiàn)更多有意思的功能。還有就是如果對docker的命令不熟悉的話
# 查看命令的幫助信息 docker COMMAND --help # 例如: docker rmi --help # 返回結(jié)果 Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] Remove one or more images -f, --force Force removal of the image --help Print usage --no-prune Do not delete untagged parents
這里沒辦法列全所有的用法,也沒必要,如果你自己掌握用法既可以記得牢,也可以自己組合出自己需要的命令。
參考文獻(xiàn):
Shell腳本之a(chǎn)wk詳解;
Docker的學(xué)習(xí)--命令使用詳解;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26649.html
摘要:初步列了以下方案用實現(xiàn)擅長,通過重定向?qū)⒌妮敵鰝鹘o,處理完后執(zhí)行系統(tǒng)命令清除鏡像。對鏡像列表進(jìn)行去重操作可以以鏡像名稱為進(jìn)行去重獲取歷史鏡像要保留最近個鏡像清除歷史鏡像,其實就是保留數(shù)據(jù)前行,有個內(nèi)置變量保存當(dāng)前處理行編號。 背景 雖然對awk早有耳聞,據(jù)說是個很強(qiáng)大的工具,但一直沒機(jī)會去了解和使用,最近碰到一個需求,用awk輕松解決,才真正一窺它的厲害。需求是這樣的,應(yīng)用每次升級都會...
摘要:前兩天在本地安裝了,熟悉了下命令之后,還是忍不住到上進(jìn)行了一波鏡像部署,以下是我的操作步驟和一些想法。但是如果想要將當(dāng)前目錄的文件復(fù)制進(jìn)里頭,首先要保證鏡像在運(yùn)行,然后命令中的容器名使用我圈出來的那個名字。 前兩天在本地安裝了docker,熟悉了下命令之后,還是忍不住到centos上進(jìn)行了一波golang鏡像部署,以下是我的操作步驟和一些想法。準(zhǔn)備:一臺安裝了docker的可聯(lián)網(wǎng)的ce...
摘要:博文參考命令預(yù)覽基礎(chǔ)命令文本搜索權(quán)限管理文件搜索幫助命令用戶管理壓縮解壓網(wǎng)絡(luò)配置關(guān)機(jī)重啟常用命令系統(tǒng)信息顯示機(jī)器的處理器架構(gòu)顯示正在使用的內(nèi)核版本顯示的信息校驗內(nèi)存使用顯示哪些被使用顯示內(nèi)核的版本顯示網(wǎng)絡(luò)適配器及統(tǒng)計顯示已加載的文件系統(tǒng) 博文參考 http://www.178linux.com/78199 http://www.cnblogs.com/suliuer/p/5448747...
閱讀 781·2023-04-25 17:33
閱讀 3632·2021-07-29 14:49
閱讀 2484·2019-08-30 15:53
閱讀 3439·2019-08-29 16:27
閱讀 2003·2019-08-29 16:11
閱讀 1035·2019-08-29 14:17
閱讀 2438·2019-08-29 13:47
閱讀 2022·2019-08-29 13:28