EP0 Docker命令(更新中)
完整且最新的命令参考官方文档
Docker引擎基础命令
查看版本号[version]
显示系统信息
语法
docker version
说明
显示有关 Docker 安装的系统范围信息。包括内核版本、容器数量、镜像数量等。
帮助命令[help]
显示命令帮助
语法
docker help
docker COMMAND --help
docker COMMAND --h
说明
- 可以通过
docker help查看docker可执行的命令 - 可以通过
docker COMMAND --help,-h查看命令的参数以及说明
镜像(image)命令
镜像列表[images]
查看本机镜像列表
语法
docker images [OPTIONS] [REPOSITORY[:TAG]]
说明
docker images默认展示所有顶级image,包含镜像名称、tag、ID、创建时间和大小.
docker的中间层(每个docker镜像都是像积木一样拼接起来的,每个镜像的基础镜像称为中间层,具体可以看docker原理)默认不展示.
选项
-a, --all 显示所有镜像
--digests 显示描述信息
-f, --filter filter 过滤输出结果
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet 只显示id
[REPOSITORY[:TAG]]
docker images命令接受一个可选参数[REPOSITORY[:TAG]],该参数将列表限制为匹配该参数的image。如果只输入REPOSITORY没有输入TAG, docker images命令会列出给定存储库中的所有图像。 eg:
% docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.21 605c77e624dd 4 months ago 141MB
nginx latest 605c77e624dd 4 months ago 141MB
% docker images nginx:1.21
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.21 605c77e624dd 4 months ago 141MB
搜索镜像[search]
从docker镜像仓库搜索镜像
语法
docker search [OPTIONS] TERM
说明
从docker镜像仓库搜索镜像.
选项
-f, --filter filter 过滤结果
--format string 格式化
--limit int 最大结果数量(default 25)
--no-trunc 不截断输出
-f,--filter
过滤flag格式是键值对。如果有多个过滤器,则传递多个flag(例如--filter is-automated=true --filter stars=3)
当前支持的过滤条件有:
- stars (int - 镜像的star数量大于等于该值)
- is-automated (boolean - true or false) - 镜像是否自动化
- is-official (boolean - true or false) - 是否官方镜像
eg.
% docker search -f stars=168 nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16839 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 168
% docker search -f is-official=false -f is-automated=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
bitnami/nginx Bitnami nginx Docker Image 129 [OK]
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 18 [OK]
拉取镜像[pull]
从docker镜像仓库拉取镜像
语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
说明
从docker镜像仓库拉取镜像.
选项
-a, --all-tags 从存储库拉取某镜像的所有tag
--disable-content-trust 跳过镜像验证
--platform string Set platform if server is multi-platform capable
-q, --quiet 不显示详细输出
示例
% docker pull nginx:1.21
1.21: Pulling from library/nginx
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:1.21
docker.io/library/nginx:1.21
查看镜像版本号
镜像版本号在docker search命令中无法查看,需要访问docker hub查看,操作如下:
- 访问docker hub
- 搜索镜像名称
- 进入镜像详情即可查看版本号
删除镜像[rmi]
删除一个或多个镜像
语法
docker rmi [OPTIONS] IMAGE[:TAG]|ID [IMAGE[:TAG]|ID ...]
说明
从主机节点删除一个或多个映像。如果图像有多个tag,使用这个带有tag参数的命令只会删除tag。如果该标记是镜像的唯一tag,则将同时删除镜像和tag。
这不会从远程仓库中删除镜像。
一般情况不能删除正在运行的容器的镜像,除非使用-f选项。要查看主机上的所有镜像,使用docker images命令。
选项
-f, --force 强制删除镜像(可以删除正在运行的镜像,不建议使用)
--no-prune Do not delete untagged parents
eg.
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nacos/nacos-server v2.0.4 e6a65052d0b1 2 months ago 1.08GB
nginx 1.21 605c77e624dd 4 months ago 141MB
nginx latest 605c77e624dd 4 months ago 141MB
tomcat latest fb5657adc892 5 months ago 680MB
redis latest 7614ae9453d1 5 months ago 113MB
nacos/nacos-mysql 5.7 72037eccf264 2 years ago 373MB
% docker rmi 605c77e624dd
Error response from daemon: conflict: unable to delete 605c77e624dd (must be forced) - image is referenced in multiple repositories
# 如果一个镜像在host有多个版本(相同imageId)那么将无法删除镜像;此时如果要删除镜像需要通过tag依次删除镜像或使用`-f` 参数
% docker rmi -f 605c77e624dd
Untagged: nginx:1.21
Untagged: nginx:latest
Untagged: nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Deleted: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
# 一个镜像多个tag时,使用`-f`删除会同时删除该镜像所有的tag
保存镜像[save]
保存一个或多个镜像到tar存档(默认保存到标准输出流)
语法
docker save [OPTIONS] IMAGE [IMAGE...]
说明
将镜像保存到标准输出流或文件(tar)文件中,一般用于备份或没有网络的情况下共享镜像.
选项
-o, --output string 保存到文件而不是输出流
eg.
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nacos/nacos-server v2.0.4 e6a65052d0b1 2 months ago 1.08GB
tomcat latest fb5657adc892 5 months ago 680MB
redis latest 7614ae9453d1 5 months ago 113MB
nacos/nacos-mysql 5.7 72037eccf264 2 years ago 373MB
% docker save -o /Users/chenrui/work/temp/redis.latest.tar redis:latest
# 保存最新版本的redis到本地的tar文件
加载镜像[load]
从本地文件加载镜像
语法
docker load [OPTION]
说明
从tar归档文件(即使使用gzip、bzip2或xz压缩)或文件或标准输入流加载映像或存储库。它可以恢复镜像和TAG。
选项
-i, --input string 从tar文件加载而不是输入流
-q, --quiet 不显示详细输入
eg.
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nacos/nacos-server v2.0.4 e6a65052d0b1 2 months ago 1.08GB
tomcat latest fb5657adc892 5 months ago 680MB
nacos/nacos-mysql 5.7 72037eccf264 2 years ago 373MB
% docker load -i /Users/chenrui/work/temp/redis.latest.tar
2edcec3590a4: Loading layer [==================================================>] 83.86MB/83.86MB
9b24afeb7c2f: Loading layer [==================================================>] 338.4kB/338.4kB
4b8e2801e0f9: Loading layer [==================================================>] 4.274MB/4.274MB
529cdb636f61: Loading layer [==================================================>] 27.8MB/27.8MB
9975392591f2: Loading layer [==================================================>] 2.048kB/2.048kB
8e5669d83291: Loading layer [==================================================>] 3.584kB/3.584kB
Loaded image: redis:latest
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nacos/nacos-server v2.0.4 e6a65052d0b1 2 months ago 1.08GB
tomcat latest fb5657adc892 5 months ago 680MB
redis latest 7614ae9453d1 5 months ago 113MB
nacos/nacos-mysql 5.7 72037eccf264 2 years ago 373MB
推送镜像[push]
将镜像推送到仓库
语法
docker push [OPTIONS] NAME[:TAG]
说明
使用docker镜像推送将您的镜像共享到docker Hub注册表或自托管的注册表。
选项
-a, --all-tags 将所有打了标签的镜像推送到仓库中
--disable-content-trust 跳过镜像签名
-q, --quiet 抑制详细输出
构建[build]
通过Dockerfile构建镜像
语法
docker build [OPTIONS] PATH | URL | -
选项
--add-host list 添加一个自定义的主机到ip映射(host:ip)
--build-arg list 设置构建ARG
--cache-from strings Images to consider as cache sources
--cgroup-parent string 容器的可选父 cgroup
--compress 使用 gzip 压缩构建上下文
--cpu-period int 限制 CPU CFS(完全公平调度器)周期
--cpu-quota int 限制 CPU CFS(完全公平调度器)配额
-c, --cpu-shares int CPU 份额(相对权重)
--cpuset-cpus string 允许执行的 CPU (0-3, 0,1)
--cpuset-mems string 允许执行的 MEM (0-3, 0,1)
--disable-content-trust 跳过图像验证
-f, --file string Dockerfile 的名称(默认为 'PATH/Dockerfile')
--force-rm 始终移除中间容器
--iidfile string 将图像 ID 写入文件
--isolation string 容器隔离技术
--label list 为图像设置元数据
-m, --memory bytes 内存限制
--memory-swap bytes 交换限制等于内存加上交换:'-1' 启用无限交换
--network string 在构建期间为 RUN 指令设置网络模式
--no-cache 构建镜像时不要使用缓存
--pull 始终尝试拉取更新版本的图像
-q, --quiet 成功时禁止构建输出并打印图像 ID
--rm 成功构建后移除中间容器
--security-opt strings 安全选项
--shm-size bytes /dev/shm 的大小
-t, --tag list 名称和可选的“名称:标签”格式的标签
--target string 将目标构建阶段设置为构建。
--ulimit ulimit 限制选项
容器(container)命令
运行[run]
运行新的容器
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
说明
docker run命令首先在指定的镜像上创建一个可写的容器层,然后使用指定的命令启动它。也就是说,docker run等价于docker create然后docker start {id}。停止的容器可以使用docker start重新启动,并且它之前的所有更改都保持不变。查看docker ps -a来查看所有容器的列表。
选项
-a, --attach 附加到STDIN、STDOUT或STDERR
-d, --detach 在后台运行容器并打印容器ID
-e, --env list 设置环境变量
-h, --hostname string 容器主机名
-i, --interactive 即使没有attached,也要保持 STDIN 打开状态
--ip string 设置容器的ip4地址
--link list 与其他容器链接
-m, --memory bytes 内存限制
--name string 设置容器的名称
--network network 将容器连接到一个网络
-p, --publish list 向宿主发布容器的端口
-P, --publish-all 将所有暴露的端口发布到随机端口
--restart string 当容器退出时应用的重新启动策略(默认为“no”)
--rm 在容器退出时自动删除它
-t, --tty 为容器分配一个伪 tty 终端并绑定到容器的标准输入上,之后用户就可以通过终端来控制容器了,一般-t都是与-i一起出现的,也就是-it。
-v, --volume list 绑定挂载卷
-w, --workdir string 容器内的工作目录
* 仅包含常用选项参数,所有参数可查阅官方文档
查看日志[logs]
获取容器日志
语法
docker logs [OPTIONS] CONTAINER
说明
docker日志命令批量检索在执行时出现的日志。
该命令仅对使用json文件或日志记录驱动程序启动的容器有效。
选项
-f, --follow 跟踪日志输出
-n, --tail string 从日志末尾开始显示的行数(默认为“all”)
-t, --timestamps 显示时间戳
查看容器元数据[inspect]
返回Docker对象的元数据
语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
说明
Docker inspect提供了由Docker控制的构造的详细信息。
默认情况下,docker inspect将以JSON数组呈现结果。
选项
--format , -f Format the output using the given Go template
--size , -s Display total file sizes if the type is container
--type Return JSON for specified type
查看容器进程[top]
显示容器的运行进程
语法
docker top CONTAINER [ps OPTIONS]
性能监控[stats]
显示实时的容器资源使用统计数据流
语法
docker stats [OPTIONS] [CONTAINER...]
说明
docker stats命令返回运行容器的实时数据流。若要将数据限制在一个或多个特定容器中,请指定一个由空格分隔的容器名称或id列表。您可以指定一个停止的容器,但是停止的容器不返回任何数据。
选项
-a, --all 显示所有容器(默认显示正在运行)
--format string Pretty-print images using a Go template
--no-stream 禁用流统计,只提取第一个结果
--no-trunc 不截断输出
连接到正在运行中的容器[attach]
将本地标准输入、输出和错误流附加到正在运行的容器
语法
docker attach [OPTIONS] CONTAINER
说明
要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。
官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。
选项
--detach-keys string Override the key sequence for detaching a container
--no-stdin 不附加STDIN(标准输入)
--sig-proxy 代理进程接收到的所有信号(默认为true)
复制[cp]
在容器和本地文件系统之间复制文件/文件夹
语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
选项
-a, --archive 存档模式(复制所有uid/gid信息)
-L, --follow-link 始终跟随SRC_PATH中的符号链接
启动/停止/重启[start/stop/restart]
启动/停止/重启容器
语法
docker start CONTAINER
docker stop CONTAINER
docker restart CONTAINER
删除容器[rm]
移除一个或多个容器
语法
docker rm [OPTIONS] CONTAINER [CONTAINER...]
选项
-f, --force 强制删除正在运行的容器(使用SIGKILL)
-l, --link 删除指定的链接
-v, --volumes 删除与容器关联的匿名卷
容器列表[ps]
容器列表
语法
docker ps [OPTIONS]
说明
说明
选项
-a, --all 显示所有容器(默认显示正在运行)
-f, --filter filter 根据提供的条件过滤输出
-n, --last int 显示最近创建的容器(包括所有状态)(默认值-1)
-l, --latest 显示最新创建的容器(包括所有状态)
--no-trunc 不截断输出
-q, --quiet 只显示容器id
-s, --size 显示总文件大小
提交[commit]
根据容器的更改创建一个新映像
语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
选项
-a, --author string 作者
-c, --change list 对创建的镜像应用Dockerfile指令
-m, --message string 提交消息
-p, --pause 在提交期间暂停容器(默认为true)
导出容器[export]
将容器文件系统导出为tar归档文件
语法
docker export [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
说明
docker export命令不导出与容器相关联的卷的内容。如果卷挂载在容器中现有目录的顶部,docker export将导出底层目录的内容,而不是卷的内容。
选项
--output , -o 写入文件,而不是标准输出
导入容器[import]
从压缩包中导入内容以创建文件系统映像
语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
说明
你可以指定URL或-(破折号)直接从STDIN中获取数据。URL可以指向一个归档文件(.tar、.tar.gz、.tgz、.bzip、.tar.gz、。. xz或.txz)包含一个文件系统或Docker主机上的单个文件。如果指定了一个归档文件,Docker会相对于/(根目录)将其解压到容器中。如果指定单个文件,则必须指定主机内的完整路径。要从远程位置导入,请指定一个以http://或https://协议开始的URI。
——change选项将Dockerfile指令应用于创建的镜像。支持的Dockerfile指令:CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR
选项
--change , -c 在创建的镜像上应用Dockerfile指令
--message , -m 为导入的图像设置提交消息
--platform 如果服务器支持多平台,请设置平台
卷(volume)命令
创建卷[create]
创建一个卷
语法
docker volume create [OPTIONS] [VOLUME]
说明
创建一个新卷,容器可以使用该卷并在其中存储数据。如果未指定名称,Docker将生成一个随机名称。
选项
-d, --driver string 指定卷驱动程序名称(默认为"local")
--label list 设置卷的元数据
-o, --opt map 设置驱动程序特定选项 (default map[])
卷列表[ls]
查看卷列表
语法
docker volume ls [OPTIONS]
说明
列出 Docker 已知的所有卷。
选项
--filter,-f 提供过滤器值(例如 'dangling=true')
--format 使用 Go 模板打印精美的卷
--quiet,-q 只显示卷名
卷详情[inspect]
查看卷详情
语法
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
说明
返回卷的信息。默认情况下,该命令以JSON数组呈现所有结果。
选项
--filter,-f 提供过滤器值(例如 'dangling=true')
删除卷[rm]
删除卷
语法
docker volume rm [OPTIONS] VOLUME [VOLUME...]
说明
删除一个或多个卷。
选项
--force , -f 强制删除
清理卷[prune]
清理卷
语法
docker volume prune [OPTIONS]
说明
清理所有未使用的卷
选项
--filter 提供过滤器值(例如 'label=<label>')
--force , -f 强制删除