我想生成一個合成的docker ps表,但是我的docker鏡像路徑非常長。我想做的解決方案是只顯示影像名稱的最后一部分:
這就是我的情況:
這就是我的情況。
這就是我的情況:
docker ps --format "table {{. Names}t{{.Image}}t{{.Status}}t{{.Command}"
NAMES IMAGE STATUS COMMAND
a_container a_local_image Up 36 minutes "python..."
another_container registry.example. com/group/subgroup/project/my_image: latest Up 38 minutes "go..."
我想:
docker ps --format "table {{. Names}t{{ <magic .Image> }}t{{.Status}}t{{.Command}}"/span>
NAMES IMAGE STATUS COMMAND
a_container a_local_image Up 36 minutes "python..."
another_container my_image:最新 Up 38 minutes "go..."
所以基本上,獲得最后一個/之后的內容,就像basename做的那樣。
這就是我所嘗試的:
# No fixed length.
docker ps --format "table {{ slice .Image 0 10}}"/span>
# 沒有最后的索引可用。
docker ps --format 'table {{(split "/" .Image)}}'
歡迎任何幫助或解決方法。
p.s.: 因為我使用docker cli,我想我不能定義自定義函式來使用模板表達。
uj5u.com熱心網友回復:
沒有好的方法來獲取模板陣列的最后一個元素。即使你可以使用index和len內置,你也不能使用算術來得到len - 1。
這是一個僅用于模板的技巧:
{{ $image := ""/span> }}{{ range split .Image "/" }}{{ $image = . }}{{ end }{{ $image }}
基本來說,它做了以下作業:
$imagesplit 在/.Image。
$image$image將持有最后一個元素的值$image完整的命令(用包圍的頂點',所以你不必轉引號):
docker ps --format 'table {{.Names}} {{$image :=" {{$image := "" }}{{ range split .Image "/" }}{{ $image = . }}{{ end }}{{ $image }}。 {{.狀態}} {{.狀態}} {{.命令}}'
uj5u.com熱心網友回復:
你可以使用下一個解決方法,我把它放在一個shell檔案中,只是因為它太長了,但你可以在shell中直接呼叫它。
test.sh
paste <(docker ps --format 'table {{.ID}}')
<(docker ps --format 'table {{.Image}}' | awk -F '/' '{print$NF}')
<(docker ps --format 'table {{.Command}}. {{.CreatedAt}} {{.狀態}} {{.狀態}} {{.埠}} {{.埠}} {{.名稱}}')
解釋:
docker ps --format 'table {{.ID}}'得到docker ps的ID列 。
docker ps --format 'table {{.Image}}'獲得ID列。| awk -F '/' '{print $NF}'),首先得到Image列,然后用awk來分割/,按你的要求得到最后的子列。- 左邊是用來獲得你需要的
docker ps的剩余列。
- 最后,使用
paste命令來合并上述命令的輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309920.html
標籤:
