如何使用 AWK 列出 Docker 容器?

如何使用 AWK 列出 Docker 容器?

我正在寻找使用如下工具:

  • grep
  • sed
  • 大王

与 Docker 一起工作。

列出容器:

docker container ls | awk '{print $1}'

结果:

CONTAINER
490e3d669259
a44230a617e1

我怎样才能省略“标题”?

docker container ls如果有用的话,以下是完整输出:

CONTAINER ID  IMAGE  COMMAND                 CREATED        STATUS        PORTS                                        NAMES
490e3d669259  jetty  "/docker-entrypoint.…"  3 minutes ago  Up 3 minutes  0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp  quirky_antonelli
a44230a617e1  jetty  "/docker-entrypoint.…"  4 minutes ago  Up 4 minutes  8080/tcp                                     goofy_hamilton

我只是在寻找容器标题下。

答案1

使用 awk,你可以使用以下命令跳过第一行(或记录)NR > 1

docker container ls | awk 'NR > 1 {print $1}'

但你不需要这样做。你可以docker告诉格式化输出

% docker container ls --format '{{.ID}}'
bd1299b0dd5a
8fcbcd67a843

答案2

您正在寻找的命令是tail -n +2

docker container ls | awk '{print $1}' | tail -n +2

解释这里(还有一个选项使用sed——我想你必须尝试哪个是最快的)。

答案3

Docker 为您提供了更多控制权,因此您实际上不需要使用第二个命令进行管道处理。在这种情况下,您只需使用该--quiet|-q选项即可。

$ docker container ls -q
490e3d669259
a44230a617e1

许多命令行工具使用类似的约定,以便--help提供有关使用选项的更详细信息。以下是 的输出docker container ls --help

# docker container ls --help

Usage:  docker container ls [OPTIONS]

List containers

Aliases:
  ls, ps, list

Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes

相关内容