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.mzph.cn/news/731927.shtml

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

相关文章

开发知识点-Apache Struts2框架

Apache Struts2 介绍S2-001S2CVE-2023-22530 介绍 Apache Struts2是一个基于MVC&#xff08;模型-视图-控制器&#xff09;设计模式的Web应用程序框架&#xff0c;它是Apache旗下的一个开源项目&#xff0c;并且是Struts1的下一代产品。Struts2是在Struts1和WebWork的技术基础…

华为北向网管NCE开发教程(1)闭坑选接口协议

华为北向网管NCE开发教程&#xff08;1&#xff09;闭坑选接口协议 华为北向网管NCE开发教程&#xff08;2&#xff09;REST接口开发 华为北向网管NCE开发教程&#xff08;3&#xff09;CORBA协议开发 本文一是记录自己开发华为北向网管遇到的坑&#xff0c;二是给需要的人&…

Androidstudio实现登录按钮按下变色

在activity_main.xml中&#xff0c;写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"androi…

简历–工作经历–通用

文章目录 底层逻辑导图要做到&#xff1a;避免出现&#xff1a;爽文模版&#xff1a;逆境努力逆袭&#xff1a;娱乐 底层逻辑 写作底层逻辑&#xff1a; 简历是给面试者/老师看的&#xff0c;要让人家看起来轻松。 工作经历方面&#xff0c;时间一般是倒着写的&#xff08;考官…

基于git推送的ES检索pdf内容优化思路与代码实现

写在前面 在之前的内容中我们已经介绍了创建gitbucket的webHook&#xff0c;使得仓库有更新时自动推送到我们定义的接口&#xff1b;然后Java读取仓库的文件转码写入ES库&#xff0c;这些核心流程已经实现。 1. 实现ES检索pdf等文件内容的插件 2. 基于GitBucket的Hook构建ES…

解决虚拟机静态网址设置后还是变动的的问题

源头就是我的虚拟机静态网址设置好了以后但是网址还是会变动 这是我虚拟机的配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 这是出现的问题 进入这里 cd /etc/sysconfig/network-scripts/ 然后我去把多余的ens33的文件都删了 然后还不行 后来按照这个图片进行了下 然后…

中国电信提速云计算重庆基地二期项目开建预计2020年底建成

4月3日&#xff0c;中国电信重庆公司消息称&#xff0c;在大力加快5G网络、数据中心等新型基础设施建设的同时&#xff0c;中国电信全面加快云计算重庆基地项目二期建设。 该项目拥有超过20万套。 服务器运营能力预计年内完成。 据重庆电信相关负责人介绍&#xff0c;中国电信水…

YOLOv8-Seg改进:特征融合篇 | GELAN(广义高效层聚合网络)结构来自YOLOv9

🚀🚀🚀本文改进:使用GELAN改进架构引入到YOLOv8 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能; 3)独家自研模块助力分割; 1.YO…

Spring学习 基础(二)Bean和AOP

3、Spring Bean Bean 代指的就是那些被 IoC 容器所管理的对象&#xff0c;我们需要告诉 IoC 容器帮助我们管理哪些对象&#xff0c;这个是通过配置元数据来定义的。配置元数据可以是 XML 文件、注解或者 Java 配置类。 Bean的创建方式 1. XML 配置文件&#xff1a; 传统上&am…

打开stable diffusion webui时,提示缺少clip或clip安装不上怎么办

在当前数字化时代&#xff0c;软件工具的应用已经成为人们日常生活和工作中不可或缺的一部分。而在使用各种软件工具的过程中&#xff0c;遇到一些技术性问题也是常有的事情。比如&#xff0c;在打开 Stable Diffusion WebUI 这样一个功能强大的工具时&#xff0c;有时会遇到缺…

python基础篇--学习记录2

1.深浅拷贝 l1 ["张大仙","徐凤年",["李淳刚","邓太阿"]] # 变量名对应的就是内存地址,这里就是将l1的内存地址给了l2 # 现在两个变量指向同一个内存地址,l1变化l2也会变化 l2 l1 现在的需求是l2是l1的拷贝版本,但是两者是完全分割…

基于 HBase Phoenix 构建实时数仓(2)—— HBase 完全分布式安装

目录 一、开启 HDFS 机柜感知 1. 增加 core-site.xml 配置项 2. 创建机柜感知脚本 3. 创建机柜配置信息文件 4. 分发相关文件到其它节点 5. 重启 HDFS 使机柜感知生效 二、主机规划 三、安装配置 HBase 完全分布式集群 1. 在所有节点上配置环境变量 2. 解压、配置环境…

微信小程序onLoad加载定义好的函数

这里小程序开发中容易犯的错误-1写自定义目录标题 给客户做一个程序。需要在页面加载的时候在onLoad(options){}中加载定义好的函数&#xff0c;代码如下 onLoad(options) {get_week_()},运行时老报错 后来修改为正确的代码 onLoad(options) {this.get_week_()//必须加this},再…

YOLOv8优化策略:SPPF涨点篇 |引入YOLOv9的SPPELAN

🚀🚀🚀本文改进:SPP创新结合ELAN,来自于YOLOv9,助力YOLOv8,将SPPELAN代替原始的SPPF 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.YOLOv9介绍 论文: 2402.13616.pdf (arxiv.org) 摘要: 如今…

Linux的top命令解析

Top命令是什么 TOP命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系…

RT-DETR优化改进:下采样涨点篇 |引入YOLOv9的下采样ADown

🚀🚀🚀本文改进:YOLOv9的下采样ADown助力RT-DETR,将ADown添加在backbone和head处,提供多个yaml改进方法 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 🚀🚀🚀学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 🚀🚀🚀RT-DETR模型…

LeetCode Python - 41. 缺失的第一个正数

目录 题目答案运行结果 题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a…

Java List集合取交集的八种不同实现方式

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在Java中&#xff0c;取两个List集合的交集可以通过多种方式实现&#xff0c;包括使用Java 8的Stream API、传统的for循环遍历、使…

KH-MCX-KWE-W

KH-MCX-KWE-W品牌: kinghelm(金航标)封装: 插件 描述: 镀金

试题 算法训练 强力党逗志芃

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 逗志芃励志要成为强力党&#xff0c;所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到&#xff0c;每个技能…