举几个Docker ps 命令的例子,Linux运维必知!
转载请复制本声明!
编辑:漫谈君
来源链接:https://www.wljslmz.cn/11017.html
您使用的第一个 Docker 命令是docker ps
命令,它显示了正在运行的容器:
docker ps
实际上,运行此命令会为您提供正在运行的容器列表及其唯一的容器 ID、映像名称、它正在执行的命令、它运行以来的时间(正常运行时间)以及它正在使用的端口。
但是你可以用它做更多的事情,可以显示已停止的容器、过滤结果或仅显示容器 ID。
docker ps 命令
Docker 有一个别名来显示所有使用 POSIX 友好命名约定的正在运行的容器。
docker ps
这是在我的计算机上执行的示例:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
此命令显示有关所有正在运行的容器的详细信息。
显示的详细信息是容器的唯一 ID、映像的名称、容器正在执行的命令、容器的创建日期、正常运行时间、映射的端口和容器名称。
作为系统管理员,经常会在脚本中使用此命令,docker ps当您在脚本中运行时,Docker 提供了一些有用的选项。
显示所有容器(不仅仅是正在运行的容器)
由于 UNIXps命令用于显示进程(正在执行的程序),Docker 的行为类似。
运行docker ps只会显示处于活动状态的 docker 容器。
如果你停止一个正在运行的容器,它仍然存在,只是它不再运行了。
要查看处于停止状态的容器,请使用--all(or -a)
选项,如下所示:
docker ps --all
我停止了容器transmission_web,让我们看看我在输出中得到了什么。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
如您所见,该-a选项还显示了一个已停止的容器。
过滤 docker ps 的输出以获得更准确的结果
该docker ps命令有一个非常有用的选项--filter(或-f简称)。
从选项名称可以看出,您可以使用以下字段过滤掉容器:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
我创建了一个名为nextcloud_server. 我想查看有关容器的详细信息,但只查看具有我要查找的名称的容器。让我们看看如何使用name过滤器。
$ docker ps --filter "name=nextcloud_server"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 3 hours ago Up 3 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
我有几个容器正在运行,但使用name过滤器传递只会显示与名称匹配的容器。
让我们尝试使用id过滤器。我有一个 ID 为“140161b8b139”的 MariaDB 容器。我将使用以下命令来实现这一点。
$ docker ps --filter "id=140161b8b139"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
140161b8b139 mariadb "docker-entrypoint.s…" 15 hours ago Up 15 hours 3306/tcp nextcloud_db
简单的!我得到了具有匹配 ID 的容器。
按照容器的创建顺序显示容器
可以使用--latest
(或l
简称)按创建日期的顺序列出容器。
该顺序在顶部是最新的,在底部是最旧的。
docker ps --latest
这是在我的计算机上运行命令的示例输出:
$ docker ps --latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 15 hours ago Up 15 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
73a6901a4846 lscr.io/linuxserver/transmission "/init" 16 hours ago Exited (137) 16 hours ago transmission_web
这个命令有一些陷阱。
-
不会列出任何用作“依赖项”的容器 -
输出包括所有容器状态(这意味着即使是停止的容器也会被列出)
我创建了容器“nextcloud_server”,并将 MariaDB 作为其“依赖项”,--latest因此,使用标志时,该容器不会在输出中列出。
脚本多吗?仅显示容器 ID
假设您正在编写一个脚本并且只想处理容器 ID,以便您可以对容器执行操作,为此,您可以使用--quiet
(或-q
简称)选项。
docker ps -q
下面给出的是在我的计算机上运行的输出。
$ docker ps -q
58c7013a49c3
140161b8b139
如您所见,输出仅包含容器 ID(正在运行的容器),没有其他内容。