“docker ps”命令输出格式:仅列出正在运行的容器名称

125

docker ps --format "table {{.Names}}" 命令输出第一行为 NAMES

root@docker-2gb-blr1-01:~# docker ps --format "table {{.Names}}"
NAMES
enr
osticket
osticket_db
...

docker inspect --format '{{.Name}}' $(docker ps -q)

输出容器名称的开头带有/


注:该命令是用于Docker技术的。
root@docker-2gb-blr1-01:~# docker inspect --format '{{.Name}}' $(docker ps -q)"
/enr
/osticket
/osticket_db

我想列出正在运行的容器名称,不包括标题或开始斜杠。请分享如何实现此目标的选项。
5个回答

198

尝试从--format参数中删除table部分,例如:

docker ps --format '{{.Names}}'

它应该给你一个简单的容器名称列表,没有表头


3
如何查询容器ID - Vignesh_A
只有对我来说,docker ps -a --format '{{.Names}}' 是有效的。 - starguy
2
@Vignesh_A 使用docker ps -q命令获取容器ID。 - Harold Castillo
请查看以下内容: https://dev59.com/HVUL5IYBdhLWcg3wOV2-#62336512 - nPcomp
对于ID,可以使用docker ps --format '{{.ID}}'来获取。花括号中的参数实际上是docker ps输出中使用的列简称。 - Gautam

135

以下是我们使用 docker ps 命令查询其他列的方法。

名称:

docker ps --format '{{.Names}}'

ID:

docker ps --format '{{.ID}}'

图像:

docker ps --format '{{.Image}}'

命令:

docker ps --format '{{.Command}}'

创建时间:

docker ps --format '{{.RunningFor}}'

状态:

docker ps --format '{{.Status}}'

端口:

docker ps --format '{{.Ports}}'

更多信息可以在这里找到。


109

这只是一个组合命令,它使用 table 标签美化。

$ docker ps --format "table {{.Image}}\t{{.Ports}}\t{{.Names}}"

IMAGE               PORTS                NAMES
nginx               0.0.0.0:80->80/tcp   nginx

另外,您可以将其添加到.docker/config.json文件中,从而允许您自定义docker ps命令的输出。

添加到~/.docker/config.json

{
  "psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Status}}\\t{{.Names}}"
}

4
详细的文档可以在 这里 找到。 - Venkatesh Mondi
3
可以不使用 table,例如 docker ps --format '{{.ID}}\t{{.Names}}' - Chris Halcrow
@ChrisHalcrow 是的,但使用“table”可以使您的列保持整洁且易读。 - Enissay
或者您可以直接运行以下命令:docker container list --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}\t{{.Networks}}\t{{.Ports}}' | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}' | awk 'BEGIN{FS=OFS="[[:space:]][[:space:]]+"} gsub("0.0.0.0:", "", $7) gsub(",?:::[^,]+", "", $7) gsub(" , "," ",$7) sub(", $", "", $7) sub(".*/.*/", "", $3) sub("minutes","m",$4) sub("minutes","m",$5) sub("hours","h",$4) sub("hours","h",$5) sub("ago","",$4) {printf("%-15s%-22s%-38s%-16s%-22s%-21s%s\n",$1" ",$2" ",$3" ",$4" ",$5" ",$6" ",$7)}' - Tim Chaubet
你可以使用以下命令来获取Docker容器的详细信息:docker container list --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}\t{{.Networks}}\t{{.Ports}}' | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}' | awk 'BEGIN{FS=OFS="[[:space:]][[:space:]]+"} gsub("0.0.0.0:", "", $7) gsub(",?:::[^,]+", "", $7) gsub(" , "," ",$7) sub(", $", "", $7) sub(".*/.*/", "", $3) sub("minutes","m",$4) sub("minutes","m",$5) sub("hours","h",$4) sub("hours","h",$5) sub("ago","",$4) {printf("%-15s%-22s%-38s%-16s%-22s%-21s%s\n",$1" ",$2" ",$3" ",$4" ",$5" ",$6" ",$7)}' - undefined

5

0
为了一个干净简洁的概览,我将这段代码放在了我的~/.bashrc文件中:
function F_DOCKER_CONTAINERS() {
    local V_IFS=$IFS; local V_LINE=""
    IFS=$'\n'
    local V_OUT=""
    for V_STATUS in 'Up' 'Running' 'Restarting' 'Created' 'Paused' 'Exited' 'Stopped' 'Dead'; do
        V_OUT=""
        local V_LINE=""
        for V_LINE in $( docker ps -a --format "{{.Names}} {{.Status}}" | grep " ${V_STATUS}" ); do
            V_LINE=$( echo -n "${V_LINE}" | cut -d' ' -f1 )
            V_OUT="${V_OUT}\n${V_LINE}"
        done
        if [[ "$V_OUT" != "" ]]; then
            echo -e "\n\033[036m${V_STATUS}\033[0m${V_OUT}"
        fi
    done
    echo
    IFS=$V_IFS
}
alias docker-containers=F_DOCKER_CONTAINERS

重新启动bash并运行docker-containers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接