30
2025
04
01:22:19

一文掌握Docker常用命令:容器查询、执行、启停全解析

我们今天来简单学习几个和操作Docker容器相关的命令:docker ps、docker exec、docker start、docker stop、docker info和docker version。

1、docker ps/docker container ls

docker ps命令等于docker container ls 命令,可以列出本地存储库中的容器。默认情况下,只显示正在运行的容器。

这两个命令的用法如下:

docker ps [OPTIONS]docker container ls [OPTIONS]


1.1、命令选项

-a, --all[=false]


显示所有容器(默认显示仅运行)。

-f, --filter=


根据提供的条件过滤输出。

--format=""


使用自定义模板设置输出格式:

“table”:以带列标题的表格格式打印输出(默认);

“table TEMPLATE”:使用给定的Go模板以表格格式打印输出;

“json”:以json格式打印;

“TEMPLATE”:使用给定的Go模板打印输出。

有关使用模板格式化输出的详细信息请参考:https://docs.docker.com/go/formatting/。

-h, --help[=false]


显示docker ps命令的帮助信息。

图片

-n, --last=-1


显示最近创建的n个容器(包括所有状态)。

-l, --latest[=false]


显示最新创建的容器(包括所有状态)。

--no-trunc[=false]


不要截断输出。

-q, --quiet[=false]


仅显示容器ID。

-s, --size[=false]


显示文件总大小。

1.2、过滤输出条件

根据以下条件过滤输出:

- ancestor=([:tag]||image@digest ⟨mailto:image@digest⟩):从镜像或子体创建的容器- before=(|)- expose=([/]|/[])- exited= an exit code of- health=(starting|healthy|unhealthy|none)- id= a container's ID- isolation=(default|process|hyperv) (Windows daemon only)- is-task=(true|false)- label= or label==- name= a container's name- network=(|)- publish=([/]|/[])- since=(|)- status=(created|restarting|removing|running|paused|exited)- volume=(|)


1.3、输出格式

格式化选项(--format)使用Go模板漂亮地打印容器输出。

Go模板的有效占位符如下:

- .ID - Container ID.- .Image - 镜像ID。- .Command - 引用命令。- .CreatedAt - 创建容器的时间。- .RunningFor - 自容器启动以来经过的时间。- .Ports - 暴露的端口。- .Status - 容器状态。- .Size - 容器磁盘大小。- .Names - 容器名称。- .Labels - 分配给容器的所有标签。- .Label - 此容器的特定标签的值。例如“{{.Label "com.docker.swarm.cpu"}}”。- .Mounts - 此容器中装载的卷的名称。- .Networks - 连接到此容器的网络的名称。


1.4、操作示例

显示所有容器,包括未运行的容器。

图片

仅显示所有容器的ID,包括未运行的容器。

图片

仅显示名称为determined_torvalds的所有容器的ID。

图片

显示容器及其命令。

图片

在表格中显示带有标签的容器。

图片

在表格中显示带有节点标签的容器。

图片

显示安装有远程卷的容器。

图片

显示装有卷/data的容器。

图片

显示已发布端口为80的容器:

图片

显示暴露TCP端口范围为8000-8080的容器:

图片

以JSON格式显示容器:

图片

2、docker exec/docker container exec

docker exec命令等于docker container exec命令,用于在正在运行的容器中执行命令。使用docker exec启动的命令仅在容器的主进程(PID 1)运行时运行,如果容器重新启动,则不会重新启动;如果容器被暂停,那么docker exec命令将等待容器被取消暂停,然后运行。

这两个命令的用法如下:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]


2.1、命令选项

-d, --detach[=false]


分离模式:在后台运行命令。

--detach-keys=""


覆盖分离容器的按键顺序。

-e, --env=


设置环境变量。

--env-file=


读入环境变量文件。

-h, --help[=false]


显示docker exec命令的帮助信息。

图片

-i, --interactive[=false]


即使没有连接,也要保持STDIN打开。

--privileged[=false]


为命令授予扩展权限。

-t, --tty[=false]


分配伪TTY。

-u, --user=""


用户名或UID(格式:“[:]”)。

-w, --workdir=""


容器内的工作目录。

2.2、特权功能

在容器中运行时,特权赋予进程扩展的Linux功能,参考https://man7.org/linux/man-pages/man7/capabilities.7.html

如果没有--privileged标志,docker exec在运行容器中运行的进程与容器具有相同的功能,这可能会受到限制。设置--privileged可以为进程提供所有功能。

2.3、用户

设置用户所使用的用户名或UID,以及指定命令的组名或GID(可选)。

以下示例均有效:

--user [user | user:group | uid | uid:gid | user:gid | uid:group ]


如果没有此参数,该命令将在容器中以root身份运行。

2.4、退出状态

docker exec的退出代码提供了有关容器执行失败或退出的原因的信息。当docker exec以非零代码退出时,退出代码遵循chroot标准,如下所示:

126:如果所包含的命令无法调用。

$ docker exec busybox /etc; echo $?# exec: "/etc": permission denieddocker: Error response from daemon: Contained command could not be invoked126


127:如果找不到包含的命令。

$ docker exec busybox foo; echo $?# exec: "foo": executable file not found in $PATHdocker: Error response from daemon: Contained command not found or does not exist127


否则,包含命令的退出代码。

$ docker exec busybox /bin/sh -c 'exit 3'# 3


3、docker start/docker container start

docker start命令等于docker container start命令,用于启动一个或多个已停止的容器。

这两个命令的用法如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]docker container start [OPTIONS] CONTAINER [CONTAINER...]


3.1、命令选项

-a, --attach[=false]


连接STDOUT/STDERR并转发信号。

--checkpoint=""


从此检查点还原。

--checkpoint-dir=""


使用自定义检查点存储目录。

--detach-keys=""


覆盖分离容器的按键顺序。

-h, --help[=false]


显示docker start命令的帮助信息。

图片

-i, --interactive[=false]


附加到容器的STDIN。

4、docker stop/docker container stop

docker stop命令等于docker container stop命令,用于停止一个或多个正在运行的容器,发送SIGTERM,然后在宽限期后发送SIGKILL。

这两个命令的用法如下:

docker stop [OPTIONS] CONTAINER [CONTAINER...]docker container stop [OPTIONS] CONTAINER [CONTAINER...]


4.1、命令选项

-h, --help[=false]


显示docker stop命令的帮助信息。

-s, --signal=""


发送到容器的信号。

-t, --timeout=0


在杀死容器之前等待几秒钟。

5、docker restart/docker container restart

docker restart命令等于docker container restart命令,用于重新启动列出的一个或多个容器

这两个命令的用法如下:

docker restart [OPTIONS] CONTAINER [CONTAINER...]docker container restart [OPTIONS] CONTAINER [CONTAINER...]


5.1、命令选项

-h, --help[=false]


显示docker restart命令的帮助信息。

图片

-s, --signal=""


发送到容器的信号。

-t, --timeout=0


在杀死容器之前等待几秒钟。

6、docker info/docker system info

docker info命令等于docker system info命令,用于显示系统范围的信息。此命令显示有关Docker安装的系统范围信息。显示的信息包括内核版本、容器数量和镜像。显示的镜像数量是唯一镜像的数量,标记在不同名称下的同一镜像只计算一次。

如果指定了格式,则将执行给定的模板,而不是默认格式。Go格式的文本/模板包描述了格式的所有细节。

根据使用的存储驱动程序,可以显示其他信息,如池名称、数据文件、元数据文件、使用的数据空间、总数据空间、使用的元数据空间和总元数据空间。数据文件是存储镜像的地方,元数据文件是存储关于这些镜像的元数据的地方。首次运行时,Docker会从挂载/var/lib/docker的卷上的可用空间中分配一定数量的数据空间和元数据空间。

这两个命令的用法如下:

docker info [OPTIONS]docker system info [OPTIONS]


6.1、命令选项

-f, --format=""


使用自定义模板设置输出格式:

“json”:以JSON格式打印;

“TEMPLATE”:使用给定的Go模板打印输出。

有关使用模板格式化输出的详细信息请参考https://docs.docker.com/go/formatting/。

-h, --help[=false]


显示docker info命令的帮助信息。

图片

6.2、操作示例

显示Docker系统信息

下面的示例显示了使用overlay2存储驱动程序在Ubuntu Linux上运行的守护进程的输出。如输出所示,显示了有关overlay2存储驱动程序的其他信息:

$ docker infoClient: Docker Engine - CommunityVersion: 24.0.0Context: defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version: v0.10.4Path: /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version: v2.17.2Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:Containers: 14Running: 3Paused: 1Stopped: 10Images: 52Server Version: 23.0.3Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: systemdCgroup Version: 2Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: inactiveRuntimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38runc version: v1.1.5-0-gf19387ainit version: de40ad0Security Options:apparmorseccompProfile: builtincgroupnsKernel Version: 5.15.0-25-genericOperating System: Ubuntu 22.04 LTSOSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 991.7 MiBName: ip-172-30-0-91.ec2.internalID: 4cee4408-10d2-4e17-891c-a41736ac4536Docker Root Dir: /var/lib/dockerDebug Mode: falseUsername: gordontheturtleExperimental: falseInsecure Registries:myinsecurehost:5000127.0.0.0/8Live Restore Enabled: false


您还可以指定输出格式:

$ docker info --format '{{json .}}'{"ID":"4cee4408-10d2-4e17-891c-a41736ac4536","Containers":14, ...}


7、docker version

docker version用于显示docker版本信息,可以显示所有独立版本的Docker组件的当前版本号。该命令的用法如下:

docker version [OPTIONS]


7.1、命令选项

-f, --format=""


使用自定义模板设置输出格式:

“json”:以JSON格式打印;“TEMPLATE”:使用给定的Go模板打印输出。

有关使用模板格式化输出的详细信息请参考:https://docs.docker.com/go/formatting/。

-h, --help[=false]


显示docker version命令的帮助信息。

图片

7.2、操作示例

显示Docker版本信息

默认输出将所有版本信息分为两部分;“Client”部分包含有关Docker CLI和客户端组件的信息,“Server”部分包含关于Docker引擎和引擎使用的组件的信息(如“Containerd”和“Runc”OCI运行时间)。

显示的信息可能因您安装Docker的方式和使用的组件而异。以下示例显示了运行Docker Desktop的macOS机器上的输出:

$ docker versionClient: Docker Engine - CommunityVersion: 23.0.3API version: 1.42Go version: go1.19.7Git commit: 3e7cbfdBuilt: Tue Apr 4 22:05:41 2023OS/Arch: darwin/amd64Context: default Server: Docker Desktop 4.19.0 (12345)Engine:Version: 23.0.3API version: 1.42 (minimum version 1.12)Go version: go1.19.7Git commit: 59118bfBuilt: Tue Apr 4 22:05:41 2023OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.20GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38runc:Version: 1.1.5GitCommit: v1.1.5-0-gf19387adocker-init:Version: 0.19.0GitCommit: de40ad0


获取服务器版本:


$ docker version --format '{{.Server.Version}}'23.0.3


转储原始数据,要查看所有可用字段,可以使用格式{{json .}}。


$ docker version --format '{{json .}}'{"Client":"Version":"23.0.3","ApiVersion":"1.42", ...}





推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10990.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: