如何查看启动Docker容器的用户及对应运行容器列表?
查看Docker容器的启动用户及运行中容器列表
要同时获取运行中容器列表和对应的启动用户信息,你可以通过以下几种高效的方法实现:
方法1:使用docker inspect批量获取(推荐)
docker inspect可以获取容器的完整元数据,其中.Config.User字段存储了容器启动时指定的用户。结合docker ps和xargs,可以批量输出容器基本信息和启动用户:
docker ps -q | xargs -I {} docker inspect -f '{{.Id}} {{.Name}} {{.Config.User}}' {}
如果想要更贴近docker ps的表格格式,可以用shell循环来格式化输出:
# 打印表头 echo "CONTAINER ID NAME USER" # 遍历每个运行中容器 docker ps --format "{{.ID}} {{.Names}}" | while read container_id container_name; do # 获取启动用户 start_user=$(docker inspect -f '{{.Config.User}}' "$container_id") # 格式化输出(空值代表使用root用户启动) printf "%-12s %-18s %s\n" "$container_id" "$container_name" "${start_user:-root}" done
方法2:通过docker exec查看容器内运行用户
如果容器内包含whoami命令,也可以直接执行容器内命令查看当前运行用户(和启动用户一致):
docker ps -q | xargs -I {} sh -c "echo '{} $(docker exec {} whoami)'"
⚠️ 注意:这种方法依赖容器内的whoami工具,部分轻量镜像(如alpine)可能需要先安装busybox或相关工具,不如docker inspect通用可靠。
补充说明
- 如果创建容器时没有通过
--user参数指定用户,.Config.User字段会是空字符串,代表使用root用户启动容器。 - Docker 1.13+版本的
docker container ls和docker ps功能完全一致,上述命令对两者都适用。
内容的提问来源于stack exchange,提问作者Franck Dernoncourt




