我们今天来简单学习几个和操作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 info
Client: Docker Engine - Community
Version: 24.0.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.10.4
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.17.2
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 14
Running: 3
Paused: 1
Stopped: 10
Images: 52
Server Version: 23.0.3
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc version: v1.1.5-0-gf19387a
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 5.15.0-25-generic
Operating System: Ubuntu 22.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 991.7 MiB
Name: ip-172-30-0-91.ec2.internal
ID: 4cee4408-10d2-4e17-891c-a41736ac4536
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: gordontheturtle
Experimental: false
Insecure Registries:
myinsecurehost:5000
127.0.0.0/8
Live 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", ...}
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/10990.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~