Docker常见命令使用

Docker命令是使用Docker的基础。这里记录下Docker日常运维过程中经常使用到的一些命令,更全面的命令还请参考Docker官网。

docker用法概述

Docker命令可以通过CLI工具实现与服务器的交互。Docker命令的语法如下:

docker [DOCKER-COMMAND] [OPTIONS] [IMAGE-NAME|CONTAINER-NAME] [COMMAND] [ARG...]

其中,DOCKER-COMMAND、OPTIONS、IMAGE-NAME、CONTAINER-NAME等表示的含义如下:
(1) DOCKER-COMMAND:表示Docker支持的子命令,如container表示容器管理,image表示镜像管理,login/logout表示登入/登出镜像注册中心,等等。
(2) OPTIONS:表示命令执行时需要的参数,不同子命令,根据其功能差异,OPTIONS的参数各有不同。
(3) IMAGE-NAME|CONTAINER-NAME:指定需要操作的镜像名或容器名。对于某些子命令支持同时操作多个对象。
(4) COMMAND:需要执行的指令,主要用于容器场景,表示在容器内执行的命令。
(5) ARG:指令参数,配合COMMAND使用。

docker容器操作命令

Docker使用过程中,最经常接触的、使用频率最高的就是Docker容器操作相关的命令。

容器生命周期管理

Docker容器的生命周期包括以下关键阶段:

请添加图片描述

docker create

可以使用docker create命令或docker container create命令来新建一个容器。docker create是docker container create的简写形式。其语法表示如下:

docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]

使用docker create命令创建的容器处于Created状态,还未运行起来,可以使用docker start命令来启动它。使用示例如下:

$ docker create -it ubuntu:latest

上述示例中新建了一个容器,对应的镜像名称是ubuntu,对应的镜像版本选用最新版本。
docker create命令支持的选项十分复杂,需要读者在实践中不断体会。具体来说,主要包括如下几大类:与容器运行模式相关、与容器环境配置相关、与容器资源限制和安全保护相关等。更多docker create命令介绍可以参考官网docker container create一文。

docker run

除了使用docker create命令创建容器后通过docker start命令来启动,也可以使用docker run命令直接新建并启动容器。docker run是docker container run的简写形式。其语法表示如下:

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

使用示例如下:

$ docker run -it ubuntu:latest /bin/bash

上述示例中,启动并运行一个容器,对应的镜像名称是ubuntu,对应的镜像版本选用最新版本。容器启动后,启用bin/bash这个shell。其中,-t选项让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。用户使用exit命令退出bash后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要。

更多docker run命令介绍可以参考官网docker container run一文。

docker start

可以使用docker start命令或docker container start命令来启动一个已经创建但未启动的容器。docker start是docker container start的简写形式。如使用docker start命令去启动一个使用docker create命令创建的容器,或启动一个因为某种原因处于Stopped状态的容器。其语法表示如下:

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

可以看到,docker start命令支持同时启动多个容器。使用示例如下:

$ docker start ubuntu

上述示例中,启动了名为ubuntu的容器。可以通过docker ps命令查看下运行的容器,示例如下:

$ docker ps
CONTAINER    ID            IMAGE         COMMAND     CREATED       STATUS  PORTS  NAMES
ubuntu       af8f4f922daf  ubuntu:latest "/bin/bash" 2 minutes ago Up             silly_euler

更多docker start命令介绍可以参考官网docker container start一文。

docker restart

可以使用docker restart命令或docker container restart命令来重启一个正在运行的容器。docker restart是docker container restart的简写形式。其语法表示如下:

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

可以看到,docker restart命令支持同时启动多个容器。使用示例如下:

$ docker restart ubuntu

上述示例中,重启了名为ubuntu的容器。这里简单说明下docker start命令和docker restart命令的区别。对于docker start命令是启动处于Created或Stopped状态的容器。而docker restart命令会将一个运行态的容器先终止,然后再重新启动。如果使用docker restart重启一个处于Created或Stopped状态的容器,则两个命令没有区别,但不建议这么做。更多docker restart命令介绍可以参考官网docker container restart一文。

docker stop

可以使用docker stop来优雅终止一个运行中的容器。docker stop是docker container stop的简写形式。其语法表示如下:

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

使用示例如下:

$ docker stop docker-name-or-docker-id

docker stop命令会向容器发送一个SIGTERM信号来终止容器。此外,当Docker容器中指定的应用终结时,容器也会自动终止。如,对于只启动了一个bash终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所创建的容器也会立刻终止,处于停止状态。更多docker stop命令介绍可以参考官网docker container stop一文。

docker kill

除了使用docker stop来主动终止容器,还可以使用docker kill命令或docker container kill命令来强行终止容器。docker kill是docker container kill的简写形式。其语法表示如下:

docker container kill [OPTIONS] CONTAINER [CONTAINER...]

使用示例如下:

$ docker kill docker-name-or-docker-id

docker kill默认会发送SIGKILL信号来强制终止容器的运行,但是docker kill命令也支持传递其他信号量。与docker stop优雅终止运行中的容器来说,docker kill会立即终止容器的运行,可能会造成一些业务问题。对于生产环境,docker kill命令应谨慎使用。更多docker kill命令介绍可以参考官网docker container kill一文。

docker container prune

可以使用docker container prune清除掉所有处于Stopped状态的容器。注意,没有docker prune的简写形式。docker container prune的语法表示如下:

docker container prune [OPTIONS]

使用示例如下:

$ docker container prune

注意,docker container prune在清除掉处于Stopped状态的容器时,并不能指定容器,不过可以通过OPTIONS的–filter参数来指定过滤条件。更多docker container prune命令介绍可以参考官网docker container prune一文。

docker pause

可以使用docker pause命令或docker container pause命令来暂停一个运行中的容器。docker pause是docker container pause的简写形式。其语法表示如下:

docker container pause CONTAINER [CONTAINER...]

使用示例如下:

docker pause docker-name-or-docker-id

不同的操作系统,对应pause的实现原理有差异,更多docker pause命令介绍可以参考官网docker container pause一文。

docker unpause

使用docker pause命令进入Paused状态的容器,可以使用docker unpause或docker container unpause命令来恢复到运行状态。其语法表示如下:

docker container unpause CONTAINER [CONTAINER...]

使用示例如下:

docker unpause docker-name-or-docker-id

更多docker unpause命令介绍可以参考官网docker container unpause一文。

docker rm

可以使用docker rm或docker container rm或docker container remove命令来删除处于终止或退出状态的容器。docker rm是docker container rm或docker container remove命令的简写格式。其语法表示如下:

docker container rm [OPTIONS] CONTAINER [CONTAINER...]

默认情况下,docker rm命令只能删除已经处于终止或退出状态的容器,并不能删除还处于运行状态的容器。如果想要删除一个运行中的容器,可以添加-f参数。在强制删除时,Docker会先发送SIGKILL信号给容器,终止其中的应用,之后强行删除。示例如下:

$ docker rm -f ubuntu

上述示例中,强行终止并删除一个运行中的名为ubuntu的容器。更多docker rm命令介绍可以参考官网docker container rm一文。

docker wait

可以使用docker wait命令或docker container wait命令在终端阻塞等待直到指定的容器终止运行,并打印该容器的退出码。docker wait是docker container wait的简写形式。其语法表示如下:

docker container wait CONTAINER [CONTAINER...]

使用示例如下:

$ docker wait docker-name-or-docker-id

在终端中使用docker wait命令时,如果指定的容器正处于运行中,则当前终端将一直阻塞,直到容器终止;如果指定的容器正处于Created状态或Stopped状态,则当前终端将直接返回退出码。更多docker wait命令介绍可以参考官网docker container wait一文。

容器操作

除了管理容器的生命周期,Docker还提供了一系列的操作用来帮助日常的运维。如

docker rename

可以使用docker rename命令或docker container rename命令来重命名一个容器。docker rename是docker container rename的简写形式。其语法表示如下:

docker container rename CONTAINER NEW_NAME

将名为ubuntu的容器重命名为ubuntu-vim的命令如下:

$ docker rename ubuntu ubuntu-vim

更多docker rename命令介绍可以参考官网docker container rename一文。

docker attach

可以使用docker attach命令或docker container attach命令来连接或登录容器。docker attach是docker container attach的简写形式。其语法表示如下:

docker container attach [OPTIONS] CONTAINER

使用示例如下:

$docker attach docker-name-or-docker-id

docker attach命令可以将终端的标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)(或这三者的任意组合)附加到正在运行的容器上。这样开发或运维人员就可以查看容器的输出或以交互方式控制它,就像命令直接在容器的终端中运行一样,即登录正在运行的容器。
要停止容器,请使用CTRL+c快捷键。该快捷键发送SIGKILL信号到容器主进程。可以使用CTRL+p或CTRL+q快捷键从容器中分离并使其继续运行。
然而使用docker attach命令有时候并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了。推荐使用docker exec进入容器,推荐使用docker logs查看容器日志。
更多docker attach命令介绍可以参考官网docker container attach一文。

docker exec

docker exec是容器操作中使用频率最高的命令。可以使用docker exec命令或docker container exec命令在一个运行的容器中执行指定的命令。docker exec是docker container exec的简写形式。其语法表示如下:

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

日常的开发/运维过程中,经常需要进入容器的终端,这可以通过docker exec命令实现,示例如下:

docker exec -it docker-name-or-docker-id /bin/bash

上述示例中,将当前终端连接到容器,然后启用了一个shell客户端。这样就可在不影响容器内其他应用的前提下,与容器进行交互,就像与本地shell交互一样。
docker exec可以更好的覆盖docker attach的功能,且不会出现当多个窗口同时attach到同一个容器时,所有窗口都会同步显示的问题,推荐需要使用docker attach的地方,均使用docker exec替代。
更多docker exec命令介绍可以参考官网docker container exec一文。

docker logs

可以使用docker logs命令或docker container logs命令查看容器的日志。docker logs是docker container logs的简写形式。其语法表示如下:

docker container logs [OPTIONS] CONTAINER

使用示例如下:

$ docker logs -f docker-name-or-docker-id

需要注意的是,docker logs只能查看STDOUT、STDERR等标准输出的日志,对于存储到非标准输出的日志,如某个应用目录的文件下,则无能为力。这个时候可以通过docker exec进入容器的shell终端,然后在shell终端找到并查看日志文件即可。当然,也可在启动容器时指定输出路径,但是这会造成底层对高层的依赖,不推荐使用。如果一定要使用,可以参考Docker 日志管理最佳实践一文。更多docker logs命令介绍可以参考官网docker container logs一文。

docker export

可以使用docker export命令或docker container export命令导出一个容器的文件系统到一个tar文件。docker export是docker container export的简写形式。其语法表示如下:

docker container export [OPTIONS] CONTAINER

使用示例如下:

$docker export -o custom-docker.tar docker-name-or-docker-id

导出命令主要用于容器迁移的场景,先从一个环境中导出文件,然后再将其导入到另一个环境。不推荐使用导出/导入功能来实现容器的迁移,推荐使用Docker提供的容器镜像(Dockerfile)。更多docker export命令介绍可以参考官网docker container export一文。

docker import

可以使用docker import命令或docker image import从一个归档文件创建容器。docker import是docker image import的简写形式。注意,docker import是image相关的命令,这里划分在container下,主要是为了和export对应。其语法表示如下:

docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

使用示例如下:

docker import /path/to/exampleimage.tgz

docker import既可以指向包含文件系统的文件(.tar、.tar.gz、.tgz、.bzip、.tar.xz 或 .txz),也可以指向 Docker主机上的单个文件。此外,还可从远程服务器导入,目前只支持以http://或https://协议开头的URI。更多docker import命令介绍可以参考官网docker image import一文。

docker container inspect

可以使用docker container inspect命令来查看容器的元数据信息(如ID、创建时间、IP等信息)。注意docker container inspect没有docker inspect的简写形式。其语法表示如下:

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

更多docker container inspect命令介绍可以参考官网docker container inspect一文。

docker top

可以使用docker top命令或docker container top命令来查看容器中运行的进程信息,支持ps命令参数。docker top是docker container top的简写形式。其语法表示如下:

docker container top CONTAINER [ps OPTIONS]

使用示例如下:

$docker top docker-name-or-docker-id

docker top命令类似于Linux系统中的top命令,会打印出容器内的进程信息,包括PID、 用户、时间、命令等。更多docker top命令介绍可以参考官网docker container top一文。

docker stats

可以使用docker stats命令或docker container stats实时查看容器资源的使用情况,包括:CPU、内存、网络I/O等。docker stats是docker container stats的简写形式。其语法表示如下:

docker container stats [OPTIONS] [CONTAINER...]

使用示例如下:

$ docker stats --all

docker stats命令也可以指定已停止的容器,但是不会返回任何信息。可以使用–format来格式化统计数据,更多docker stats命令介绍可以参考官网docker container stats一文。

docker cp

可以使用docker cp命令或docker container cp命令在本地文件系统和容器之间复制文件或文件夹。docker cp是docker container cp的简写形式。
从容器复制到宿主机的语法表示如下:

docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

如将test容器的/tmp路径复制到本地的路径/data的命令是:

$ docker cp test:/tmp/ /data  

从宿主机复制到容器的语法表示如下:

docker container cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

如将本地路径data复制到test容器的/tmp路径下的命令是:

docker cp /data test:/tmp/

注意,docker cp命令中的本地文件系统中的路径可以是绝对路径,也可以是相对路径,相对于当前命令执行的路径。而容器中的路径都是相对容器的/根路径。
docker cp 命令对操作的容器的状态没有要求,可以是在运行状态,也可以是停止状态。更多docker cp命令介绍可以参考官网docker container cp一文。

docker commit

可以使用docker commit命令或docker container commit命令根据当前容器的更改创建一个新的镜像。已生成的镜像可以通过docker images查看到。docker commit是docker container commit的简写形式。其语法表示如下:

docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

使用示例如下:

$ docker commit docker-name-or-docker-id custom-repository/custom-image:v1

当使用docker commit 命令时,就向镜像提交了一个新的文件层。但这并不是只有文件系统快照被提交。每一层都包含描述执行上下文的元数据。其中包括一些容器启动时设置的参数,如环境变量、工作目录、 容器入口点、命令和参数等。如果上述值没有被明确地指定,那么这些值会从原始镜像继承。更多docker commit命令介绍可以参考官网docker container commit一文。

docker diff

可以使用docker diff命令或docker container diff命令比较一个容器不同版本提交的文件差异。docker diff是docker container diff的简写形式。其语法表示如下:

docker container diff CONTAINER

使用示例如下:

$docker diff docker-name-or-docker-id

docker diff命令列出容器内文件由三种状态:A-Add、D-Delete、C-Change。更多docker diff命令介绍可以参考官网docker container diff一文。

docker port

可以使用docker port命令查看容器的端口映射。docker port是docker container port的简写形式。其语法表示如下:

docker container port CONTAINER [PRIVATE_PORT[/PROTO]]

查看容器的端口映射,使用示例如下:

$ docker port docker-name-or-docker-id

如果仅需查看特定端口的映射,比如仅希望查看tcp协议80端口的映射,示例如下:

$ docker port docker-name-or-docker-id 80/tcp

更多docker port命令介绍可以参考官网docker container port一文。

docker update

可以使用docker update命令来动态更新容器的配置。docker update是docker container update的简写形式。其语法表示如下:

docker container update [OPTIONS] CONTAINER [CONTAINER...]

如限制cpu使用2核,限制内存占用为512M的命令如下:

docker update --cpus 2 -m 512M docker-name-or-docker-id

docker update命令支持更新的配置很多,如使用-c参数限制CPU使用份额、使用–cpus限制CPU个数、使用-m限制使用的内存等等。使用docker update命令时,要注意使用的docker版本。不同的docker版本支持的命令可能有差异。更多docker update命令介绍可以参考官网docker container update一文。

docker镜像操作命令

Docker通过一种打包和分发的软件,完成传统容器的封装。这个用来充当容器分发角色的组件被称为镜像。Docker镜像是一个容器中运行程序的所有文件的捆绑快照。当使用Docker分发软件,其实就是分发这些镜像,并在接收的机器上创建容器。镜像在Docker生态系统中是可交付的基本单位。

docker images

可以使用docker images命令或docker image ls命令或docker image list命令查看本地的镜像。docker images是docker image ls或docker image list的简写形式。其语法表示如下:

docker image list [OPTIONS] [REPOSITORY[:TAG]]

如果不需要查看所有的镜像,只需要查看某一个镜像,可以使用如下的命令:

$ docker images image-name

此外,–digests参数可以只查看本地镜像的摘要信息,-q参数可以仅查看本地镜像列表的ID信息。更多docker images命令介绍可以参考官网docker images一文。

docker image inspect

可以使用docker image inspect命令来查看镜像的元数据信息(如制作者、适应架构、各层的数字摘要、ID、创建时间、容器ID等信息)。注意docker image inspect没有简写形式。其语法表示如下:

docker image inspect [OPTIONS] IMAGE [IMAGE...]

docker image inspect命令和docker container inspect命令类似,只是docker image inspect作用的对象是镜像,docker container inspect作用的对象是容器。更多docker image inspect命令介绍可以参考官网docker image inspect一文。

docker image history

可以使用docker history命令或docker image history命令查看镜像的历史信息。docker history是docker image history的简写形式。其语法表示如下:

docker image history [OPTIONS] IMAGE

使用示例如下:

$ docker history image-name

docker history命令会列出各个镜像层的创建信息。更多docker history命令介绍可以参考官网docker image history一文。

docker image build

可以使用docker build或docker image build命令来基于Dockerfile文件创建镜像。docker build是docker image build的简写形式。其语法表示如下:

docker image build [OPTIONS] PATH | URL | -

指定Dockerfile路径并指定镜像名称及版本的构建命令如下:

$ docker build -t custom-image:V1 /path/to/a/Dockerfile 

如果不指定-t(–tag)参数,那么Docker会使用给镜像设置默认的镜像名称和标签。默认的名称通常是基于Dockerfile文件所在的目录和当前时间戳等信息生成的,而标签则通常为<none>。可以使用到docker images查看新生成的镜像。为了更好地管理和识别镜像,建议在构建时明确指定镜像的名称和标签。
除了指定Dockerfile的路径,docker build命令还支持指定Dockerfile的URL。更多docker build命令介绍可以参考官网docker image build一文。

至此,构建Docker镜像的三种主要方法都已经介绍完了,它们是:(1)使用docker commit创建新镜像;(2)使用docker import导入本地模板;(3)使用docker build 命令和Dockerfile文件构建镜像。这里推荐第三种。无论是docker commit还是docker import,都依赖特定的环境才能生成镜像。而Dockerfile+docker build的方式,将镜像的构建过程写入到Dockerfile文件中,实现了无环境无关。
Dockerfile使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中指令构建一个新的镜像。将保存Dockerfile文件的目录称为"构建环境"。Docker会在构建镜像中将构建上下文和该上下文中的文件和目录上传到Docker守护进程。这样,Docker守护进程就能直接访问想在镜像中存储的任何代码、文件或者其他数据。

docker image tag

可以使用docker tag命令或docker image tag命令给一个镜像打标签。docker tag是docker image tag的简写形式。其语法表示如下:

docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

使用示例如下:

$ docker tag ubuntu ubuntu-vim

需要注意的是,尽管使用docker tag给镜像打标签会新增一个image记录,但是从IMAGE ID可知它们是同一个镜像。docker tag的作用与git代码管理工具的tag的作用类似。
更多docker tag命令介绍可以参考官网docker image tag一文。

docker image save

可以使用docker save命令或docker image save命令将镜像保存成tar类型的压缩文件。docker save是docker image save的简写形式。其语法表示如下:

docker image save [OPTIONS] IMAGE [IMAGE...]

docker save默认会镜像的归档文件输出到标准输出,为了持久化这个文件,可以指定到特定文件,示例如下:

docker save -o custom-image.tar image-name-or-image-id

docker save命令不会生成镜像,而是将镜像持久化。而docker export命令对作用于容器,导出容器的的文件系统到一个tar文件,是对容器的持久化,可以看成容器的快照文件。使用docker export生成的镜像,再次导入后,将会丢失镜像历史和镜像层,这就意味着使用导出再导入的方式迁移或复用镜像,将无法回滚到之前的镜像层。而使用docker save生成的镜像,再通过load加载后,因为持久化了整个镜像,可以做到镜像层回滚。
更多docker save命令介绍可以参考官网docker image save一文。

docker image load

可以使用docker load命令或docker image load命令导入使用docker save命令导出的镜像压缩包。docker load是docker image load的简写形式。其语法表示如下:

docker image load [OPTIONS]

加载一个本地镜像压缩包的命令示例如下:

$ docker load -i /path/to/custom-image.tar

docker load命令用来导入一个镜像文件到本地镜像库,注意与docker import命令的区别。docker import命令导入容器快照文件到本地镜像库。容器快照文件和镜像文件的区别是:容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
更多docker load命令介绍可以参考官网docker image load一文。

docker image pull

可以使用docker pull命令或docker image pull命令从镜像仓库中心中拉取或者更新指定镜像。docker pull是docker image pull的简写形式。其语法表示如下:

docker image pull [OPTIONS] NAME[:TAG|@DIGEST]

从镜像仓库中心拉取ubuntu镜像,对应版本是18.04的命令如下:

$ docker pull ubuntu:18.04

注意,在使用docker pull命令时,并不需要指定镜像仓库中心,而是需要先试用docker login命令提前登录镜像仓库中心。也可以在使用docker pull拉取镜像的时候指定URL,但是不能添加协议(如https://)。更多docker pull命令介绍可以参考官网docker image pull一文。

docker image push

可以使用docker push命令或docker image push命令将本地的Docker镜像上传到Docker镜像仓库。docker push是docker image push简写形式。其语法表示如下:

docker image push [OPTIONS] NAME[:TAG]

将本地的ubuntu镜像,对应版本是28.04,推送到镜像注册中心的的命令如下:

$ docker push ubuntu:18.04

需要说明的是,docker push命令使用之前需要要先使用docker login登录到镜像仓库中心。更多docker push命令介绍可以参考官网docker image push一文。

docker image rm

可以使用docker image rm命令或docker image remove命令或docker rmi命令来删除镜像。docker rmi是docker image rm或docker image remove的简写形式。其语法表示如下:

docker image remove [OPTIONS] IMAGE [IMAGE...]

强制删除本地本地的ubuntu镜像的命令如下:

$ docker rmi ubuntu:latest

当同一个镜像拥有多个标签的时候,docker rmi 命令只是删除了该镜像多个标签中的指定标签而巳,并不影响镜像文件。相当于只是删除了镜像的一个标签副本而已。但当镜像只剩下一个标签时,再使用 docker rm命令会彻底删除镜像。
除了删除指定的指令,还可以与其他命令组合,实现镜像的批量删除,如删除所有镜像可以使用**docker rmi $(docker images -q)**的命令。更多docker image rm命令介绍可以参考官网docker image rm一文。

docker image prune

可以使用docker image prune清除掉未使用的镜像。所谓的未使用的镜像,主要指没有使用docker tag标记的镜像或没有被其他镜像引用的镜像。注意,没有docker prune的简写形式。docker image prune的语法表示如下:

docker image prune [OPTIONS]

清除所有未使用的镜像命令如下:

$ docker image prune --all

可以通过OPTIONS的–filter参数来指定过滤条件,或使用-f参数来强制清除未使用的镜像。更多docker image prune命令介绍可以参考官网docker image prune一文。

docker系统命令

docker system命令有助于检查和管理Docker环境。目前有四个子命令:
(1)docker system df命令用来显示磁盘的使用情况;
(2)docker system events命令用来实时显示系统事件日志;
(3)docker system info命令用来显示系统相关信息;
(4)docker system prune命令用来清除当前环境未使用的网络、容器、镜像或卷等。

docker system df

可以使用docker system df命令查看Docker Daemon进程占用的磁盘空间。其语法表示如下:

docker system df [OPTIONS]

如果需要查看磁盘的详细占用情况,可以使用如下的命令:

$ docker system df -v

docker system df主要在宿主机使用一段时间后,出现磁盘空间不足或因磁盘空间不足出现容器创建失败等问题时使用。更多docker system df命令介绍可以参考官网docker system df一文。

docker system events

可以使用docker system events命令查看docker系统实时事件。其语法表示如下:

docker system events [OPTIONS]

如需要查看一段时间范围内系统时间,可以使用如下的命令:

$docker events --since '2024-01-05T00:35:30' --until '2017-01-05T00:36:05'

更多docker system events命令介绍可以参考官网docker system events一文。

docker system info

可以使用docker info或docker system info命令查看系统的信息。这些系统信息包括:kernel版本,容器数量,镜像数量等。docker info是docker system info的简写形式。其语法表示如下:

docker system info [OPTIONS]

使用示例如下:

$ docker info

docker info命令支持格式化输出,更多docker info命令介绍可以参考官网docker system info一文。

docker system prune

可以使用docker system prune命令删除未使用的容器、网络、镜像、存储卷等资源。docker system prune是比docker container prune和docker image prune更强大的命令,支持清除更多未使用的使用资源。其语法表示如下:

docker system prune [OPTIONS]

如需要清除当前环境下所有未使用的资源(仅限容器、网络、镜像、存储卷等四种资源),可以使用如下的命令:

docker system prune -a  --volumes

默认情况下,存储卷不会被清除,因为可能是误删一些重要数据,如果需要删除,还需增加–volumes参数。更多docker system prune命令介绍可以参考官网docker system prune一文。

docker命令汇总

为了方便查找和使用,这里使用表格汇总下上面介绍的命令。

操作对象命令语法含义说明
containerdocker createdocker container create [OPTIONS] IMAGE [COMMAND] [ARG…]可以使用docker create命令或docker container create命令来新建一个容器。
containerdocker rundocker container run [OPTIONS] IMAGE [COMMAND] [ARG…]可以使用docker run命令直接新建并启动容器。
containerdocker startdocker container start [OPTIONS] CONTAINER [CONTAINER…]可以使用docker start命令或docker container start命令来启动一个已经创建但未启动的容器。
containerdocker restartdocker container restart [OPTIONS] CONTAINER [CONTAINER…]可以使用docker restart命令或docker container restart命令来重启一个正在运行的容器。
containerdocker stopdocker container stop [OPTIONS] CONTAINER [CONTAINER…]可以使用docker stop来优雅终止一个运行中的容器。
containerdocker killdocker container kill [OPTIONS] CONTAINER [CONTAINER…]可以使用docker kill命令或docker container kill命令来强行终止容器。
containerdocker container prunedocker container prune [OPTIONS]可以使用docker container prune清除掉所有处于Stopped状态的容器。
containerdocker pausedocker container pause CONTAINER [CONTAINER…]可以使用docker pause命令或docker container pause命令来暂停一个运行中的容器。
containerdocker container prunedocker container prune [OPTIONS]可以使用docker container prune清除掉所有处于Stopped状态的容器。
containerdocker unpausedocker container unpause CONTAINER [CONTAINER…]可以使用docker unpause或docker container unpause命令来恢复到运行状态。
containerdocker container prunedocker container prune [OPTIONS]可以使用docker container prune清除掉所有处于Stopped状态的容器。
containerdocker rmdocker container rm [OPTIONS] CONTAINER [CONTAINER…]可以使用docker rm或docker container rm或docker container remove命令来删除处于终止或退出状态的容器。
containerdocker waitdocker container wait CONTAINER [CONTAINER…]可以使用docker wait命令或docker container wait命令在终端阻塞等待直到指定的容器终止运行,并打印该容器的退出码。
containerdocker renamedocker container rename CONTAINER NEW_NAME可以使用docker rename命令或docker container rename命令来重命名一个容器。
containerdocker attachdocker container attach [OPTIONS] CONTAINER可以使用docker attach命令或docker container attach命令来连接或登录容器。不推荐使用,推荐使用docker exec
containerdocker execdocker container exec [OPTIONS] CONTAINER COMMAND [ARG…]可以使用docker exec命令或docker container exec命令在一个运行的容器中执行指定的命令。
containerdocker logsdocker container logs [OPTIONS] CONTAINER可以使用docker logs命令或docker container logs命令查看容器的日志。
containerdocker exportdocker container export [OPTIONS] CONTAINER可以使用docker export命令或docker container export命令导出一个容器的文件系统到一个tar文件。
imagedocker importdocker image import [OPTIONS] fileURL
containerdocker container inspectdocker container inspect [OPTIONS] CONTAINER [CONTAINER…]可以使用docker container inspect命令来查看容器的元数据信息(如ID、创建时间、IP等信息)。
containerdocker topdocker container top CONTAINER [ps OPTIONS]可以使用docker top命令或docker container top命令来查看容器中运行的进程信息,支持ps命令参数。
containerdocker statsdocker container stats [OPTIONS] [CONTAINER…]可以使用docker stats命令或docker container stats实时查看容器资源的使用情况,包括:CPU、内存、网络I/O等。
containerdocker cpdocker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-可以使用docker cp命令或docker container cp命令在本地文件系统和容器之间复制文件或文件夹。
containerdocker commitdocker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]可以使用docker commit命令或docker container commit命令根据当前容器的更改创建一个新的镜像。
containerdocker diffdocker container diff CONTAINER可以使用docker diff命令或docker container diff命令比较一个容器不同版本提交的文件差异。
containerdocker portdocker container port CONTAINER [PRIVATE_PORT[/PROTO]]可以使用docker port命令查看容器的端口映射。
containerdocker updatedocker container update [OPTIONS] CONTAINER [CONTAINER…]可以使用docker update命令来动态更新容器的配置。
imagedocker imagesdocker image list [OPTIONS] [REPOSITORY[:TAG]]可以使用docker images命令或docker image ls命令或docker image list命令查看本地的镜像。
imagedocker image inspectdocker image inspect [OPTIONS] IMAGE [IMAGE…]可以使用docker image inspect命令来查看镜像的元数据信息(如制作者、适应架构、各层的数字摘要、ID、创建时间、容器ID等信息)。
imagedocker historydocker image history [OPTIONS] IMAGE可以使用docker history命令或docker image history命令查看镜像的历史信息。
imagedocker builddocker image build [OPTIONS] PATH | URL | -可以使用docker build或docker image build命令来基于Dockerfile文件创建镜像。
imagedocker tagdocker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]可以使用docker tag命令或docker image tag命令给一个镜像打标签。
imagedocker savedocker image save [OPTIONS] IMAGE [IMAGE…]可以使用docker save命令或docker image save命令将镜像保存成tar类型的压缩文件。
imagedocker loaddocker image load [OPTIONS]可以使用docker load命令或docker image load命令导入使用docker save命令导出的镜像压缩包。
imagedocker pulldocker image pull [OPTIONS] NAME[:TAG|@DIGEST]可以使用docker pull命令或docker image pull命令从镜像仓库中心中拉取或者更新指定镜像。
imagedocker pushdocker image push [OPTIONS] NAME[:TAG]可以使用docker push命令或docker image push命令将本地的Docker镜像上传到Docker镜像仓库。
imagedocker rmidocker image remove [OPTIONS] IMAGE [IMAGE…]以使用docker image rm命令或docker image remove命令或docker rmi命令来删除镜像。
imagedocker image prunedocker image prune [OPTIONS]可以使用docker image prune清除掉未使用的镜像。所谓的未使用的镜像,主要指没有使用docker tag标记的镜像或没有被其他镜像引用的镜像。
systemdocker system dfdocker system df [OPTIONS]可以使用docker system df命令查看Docker Daemon进程占用的磁盘空间。
systemdocker system eventsdocker system events [OPTIONS]可以使用docker system events命令查看docker系统实时事件。
systemdocker system infodocker system info [OPTIONS]可以使用docker info或docker system info命令查看系统的信息。这些系统信息包括:kernel版本,容器数量,镜像数量等。
systemdocker system prunedocker system prune [OPTIONS]可以使用docker system prune命令删除未使用的容器、网络、镜像、存储卷等资源。

参考

https://blog.csdn.net/chenmozhe22/article/details/113850238 Docker/Podman使用入门—基础命令篇
https://www.runoob.com/docker/docker-command-manual.html Docker 命令大全
https://haicoder.net/docker/docker-command.html Docker命令
https://www.lvbibir.cn/posts/tech/docker-commands/ docker | 常见命令
https://docs.docker.com/engine/reference/commandline/cli/ Use the Docker command line
https://github.com/wsargent/docker-cheat-sheet docker-cheat-sheet
https://docs.docker.com/reference/cli/docker/ docker (base command)
https://juejin.cn/post/7338717224435531826 docker init
https://zhuanlan.zhihu.com/p/644429693 一文带你了解 Docker 容器生命周期
https://www.devopsschool.com/blog/lifecycle-of-docker-containers/ Lifecycle of Docker Containers
https://blog.csdn.net/succing/article/details/122393565 Docker容器生命周期
https://blog.csdn.net/weixin_41384860/article/details/128723506 Docker wait命令
https://www.zhaowenyu.com/docker-doc/reference/dockercmd/dockercmd-docker-attach.html docker attach
https://segmentfault.com/a/1190000010086763 从敲下docker logs开始理解docker日志原理
https://segmentfault.com/a/1190000023144155 Docker 日志管理最佳实践
https://blog.csdn.net/agonie201218/article/details/132420832 docker update 命令
https://www.zhaowenyu.com/docker-doc/reference/dockercmd/dockercmd-docker-build.html docker build
https://zhuanlan.zhihu.com/p/72870790 Docker的save和export命令的区别
https://www.lvbibir.cn/posts/tech/docker-commands/#23-rmi docker rmi命令
https://zhuanlan.zhihu.com/p/443993273 Docker 镜像清理
https://haicoder.net/docker/docker-tag.html Docker tag命令
https://zhuanlan.zhihu.com/p/671826581 Docker基础命令
https://yiyan.baidu.com/ 文心一言–docker build命令生成镜像的名称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272397.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Express学习(三)

Express中间件 中间件的概念 什么是中间件 中间件&#xff0c;特指业务流程的中间处理环节。Express中间件的调用流程 当一个请求到达Express的服务器之后&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理。类似于下图所示 Express中间件的格式 Expr…

【开源】JAVA+Vue.js实现食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

基于MPPT的太阳能光伏电池simulink性能仿真,对比扰动观察法,增量电导法,恒定电压法

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 扰动观察法 (Perturb and Observe Method) 4.2 增量电导法 (Incremental Conductance Method) 4.3 恒定电压法 (Constant Voltage Method) 5.完整工程文件 1.课题概述 在simulink中&#xff0c;实…

黑马点评-异步秒杀实现

异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是…

「蓝桥·算法双周赛」第七场分级赛——小白入门赛

题目列表 说明 好久没打蓝桥杯的比赛&#xff0c;回来试试水&#xff0c;就开了第1、2、3一共三个题&#xff0c;第4题可惜了。1.thanks,mom【算法赛】 思路&#xff1a; 没什么好说的&#xff0c;但是当时比赛刚开始服务器有问题&#xff0c;基本提交的全WA了。#include <…

300分钟吃透分布式缓存-24讲:Redis崩溃后,如何进行数据恢复的?

Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF&#xff0c;以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在需要进行 RDB 持久化时&#xff0c;Redis 会将内存中的所有数据以二进制的格式落地&#xff0c;每…

StarUML6.0.1使用

1. 简介 作为一个软件开发人员&#xff0c;平时免不了做一定的软件设计&#xff0c;标准做法就是采用UML来设计&#xff1a; 讨论功能流程时采用时序图、活动图来表达&#xff1b;做业务功能架构时采用组件图来表达&#xff1b;做系统部署架构时采用部署图来表达&#xff1b;做…

linux 日志轮转

前言: 在Linux系统中&#xff0c;日志轮转是一种重要的管理机制&#xff0c;它可以帮助管理日志文件的大小、数量以及保持系统的性能稳定。通过日志轮转&#xff0c;可以定期对日志文件进行归档、压缩或清理&#xff0c;确保系统的日志记录不会无限增长而占用过多的磁盘空间…

JWT身份验证

在实际项目中一般会使用jwt鉴权方式。 JWT知识点 jwt&#xff0c;全称json web token &#xff0c;JSON Web令牌是一种开放的行业标准RFC 7519方法&#xff0c;用于在两方安全地表示声明。具体网上有许多文章介绍&#xff0c;这里做简单的使用。 1.数据结构 JSON Web Token…

数字人ai直播软件突破AI大模型技术,改变未来科技格局!

数字人AI直播软件在AI大模型技术上的突破&#xff0c;将不可避免地改变未来科技格局。这一突破让人们看到了AI技术的无限可能性&#xff0c;并为未来的科技发展打开了新的大门。 AI大模型技术是近年来人工智能领域的一个热点&#xff0c;它通过构建庞大、复杂的神经网络模型&a…

【AI视野·今日NLP 自然语言处理论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 6 Mar 2024 Totally 74 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MAGID: An Automated Pipeline for Generating Synthetic Multi-modal Datasets Authors Hossein Aboutalebi, …

Vue:自动按需导入element-plus图标

自动导入使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集。 完整vite.config.js参考模板 https://download.csdn.net/download/ruancexiaoming/88928539 导入element-plus图标 命令行安装unplugin-icons pnpm i -D unplugin-icons//没有安装自…

手写简易操作系统(二)--启动计算机

前情提要 在上一部分的内容中&#xff0c;我们已经做好了模拟仿真的整个准备工作&#xff0c;这一节我们就先把计算机启动起来。 一、Bochs配置 1.1、配置启动盘 创建硬盘的工具是bximage&#xff0c;这个工具在我们的Bochs目录下&#xff0c;使用命令行创建硬盘 第一个选择…

详解数据库、Hive以及Hadoop之间的关系

1.数据库&#xff1a; 数据库是一个用于存储和管理数据的系统。数据库管理系统&#xff08;DBMS&#xff09;是用于管理数据库的软件。数据库使用表和字段的结构来组织和存储数据。关系型数据库是最常见的数据库类型&#xff0c;使用SQL&#xff08;Structured Query Language…

登录校验认证

会话技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a; 一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请…

【Web】浅聊Java反序列化之Rome——关于其他利用链

目录 前言 JdbcRowSetImpl利用链 BasicDataSource利用链 Hashtable利用链 BadAttributeValueExpException利用链 HotSwappableTargetSource利用链 前文&#xff1a;【Web】浅聊Java反序列化之Rome——EqualsBean&ObjectBean-CSDN博客 前言 Rome中ToStringBean的利用…

186基于matlab的信号盲源分离算法

基于matlab的信号盲源分离算法&#xff0c;包括变步长盲源分离&#xff08;EASI&#xff09;,RLS(自然梯度和普通梯度)&#xff0c;并将三种方法分离结果进行对比。程序已调通&#xff0c;可直接运行。 186 信号盲源分离算法 变步长盲源分离 (xiaohongshu.com)

结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)

Limo Pro 小车建图导航 引言 前景提要&#xff1a;我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目&#xff0c;从以下三个方面&#xff1a;概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分&#xff0c;同样也主要…

使用R语言进行聚类分析

一、样本数据描述 城镇居民人均消费支出水平包括食品、衣着、居住、生活用品及服务、通信、文教娱乐、医疗保健和其他用品及服务支出这八项指标来描述。表中列出了2016年我国分地区的城镇居民的人均消费支出的原始数据&#xff0c;数据来源于2017年的《中国统计年鉴》&#xf…

简单多状态dp问题----删除并获得点数

740. 删除并获得点数 - 力扣&#xff08;LeetCode&#xff09; 本题就是表示不能选值相邻的两个数。 假设nums [ 1,2,3,4,5,6]&#xff0c;那么这其实就类似一个打家劫舍问题&#xff1a; 即选1&#xff0c;就不能选2&#xff0c;只能选3&#xff0c;4&#xff0c;5&#xff…