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