【Docker 学习笔记】Docker 命令大全

文章目录

      • 说明
      • 容器生命周期管理
      • 容器操作
      • 容器rootfs命令
      • 镜像仓库
      • 本地镜像管理
      • Docker 信息
      • 最后


说明

docker cli 命令大全

docker -v 查看当前docker的版本信息

docker --help 可以查看当前docker支持的所有命令

docker COMMAND --help 可以查看子命令的帮助信息

说明:不同版本的docker,支持的命令及参数可能有不同

以下命令在如下版本测试:

C:\Users\Administrator>docker version
Client:
 Cloud integration: v1.0.35
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:53:15 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.21.1 (114176)
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:52:17 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

容器生命周期管理

命令 功能 语法 常用OPTIONS
run 从镜像创建一个容器并运行该容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach 以后台模式运行容器;
-p, --publish 指定端口映射,格式:主机(宿主)端口:容器端口 ;
-i, --interactive 以交互模式运行容器;
-t, --tty 为容器分配一个伪终端,通常与-i组合使用
-e, --env "env_var=value" 设置环境变量,设置多个环境变量使用多个-e参数实现;
--env-file envfile 从指定文件读入环境变量,文件每行是key=value,即代表一个环境变量;
--name string 给容器起个名字,如果没有指定,则随机分配一个名字;
-v, --volume 绑定一个卷,即 将主机目录与容器内的目录做映射,格式:/hostdir:/containerdir
-w, --workdir 指定容器内的工作目录
start 启动一个或多个已停止的容器 docker start [OPTIONS] CONTAINER [CONTAINER...] -a --attach 将容器的标准输出和标准错误连接到当前终端,使得可以在终端上查看容器的输出;
-i --interactive 将容器的标准输入连接到当前终端,可以与容器进行交互
stop 停止一个或多个运行中的容器 docker stop [OPTIONS] CONTAINER [CONTAINER...] -s, --signal string 向容器中的进程发送信号,默认为SIGTERM;
-t, --time int 杀死容器中进程的超时时间,默认是10s
在正常情况下,Docker 会向容器中的进程发送 SIGTERM 信号,要求其正常退出。如果在 -t 参数指定的时间内,容器中的进程没有正常退出,则 Docker 会发送 SIGKILL 信号强制杀死容器中的进程
restart 重启一个或多个容器 docker restart [OPTIONS] CONTAINER [CONTAINER...] -s, --signal string 向容器中的进程发送信号,默认为SIGTERM;
-t, --time int 杀死容器中进程的超时时间
在正常情况下,Docker 会向容器中的进程发送 SIGTERM 信号,要求其正常退出。如果在 -t 参数指定的时间内,容器中的进程没有正常退出,则 Docker 会发送 SIGKILL 信号强制杀死容器中的进程
kill 杀死一个或多个运行中的容器 docker kill [OPTIONS] CONTAINER [CONTAINER...] -s, --signal string 发送给容器中进程的信号,不提供该参数,则默认发送SIGKILL信号,即强制终止正在运行的容器(可能会导致数据丢失或其他不良影响)
信号也可以用其编号代替,如:SIGKILL 对应编号为 9,则可使用docker kill -s 9 container_name,但是不建议用编号,因为不同操作系统编号可能不同
Linux系统中,可以通过info signal查看所有信号说明和用途。
rm 删除一个或多个容器 docker rm [OPTIONS] CONTAINER [CONTAINER...] -f, --force 通过SIGKILL信号强制删除运行中的容器;
-l, --link 移除容器间的网络连接,而非容器本身;
-v, --volumes 删除与容器关联的卷
container prune 删除所有停止状态的容器 docker container prune [OPTIONS] --filter filter 提供过滤条件,如--filter "until=") 过滤出指定时间之前创建的容器;
-f, --force 强制删除,不再确认
pause 暂停容器中所有的进程 docker pause CONTAINER [CONTAINER...] OPTIONS
unpause 恢复容器中所有的进程 docker unpause CONTAINER [CONTAINER...] OPTIONS
create 创建一个新的容器但不启动它 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] 参数用法同docker run,区别在于创建容器后是否运行
rename 重命名容器 docker rename CONTAINER NEW_NAME 注意:容器在重命名时不能处于运行状态,如果容器正在运行,需要先使用docker stop命令停止容器,然后再使用docker rename命令重命名容器
update 更新容器配置,如CPU、内存、重启策略等 docker update [OPTIONS] CONTAINER [CONTAINER...] --cpu-shares=VALUE 为一个容器的 CPU 时间片配额相对权重,可以是浮点数,默认值为0
--cpus=VALUE 设置容器的 CPU 分配限制,默认值为0,表示没有限制;
--memory=BYTES 设置容器的内存限制,可以是数字或数字和单位的组合。例如,--memory=2g--memory=2000000000 都表示容器的内存限制为2GB;
--restart=VALUE:设置容器退出后的重启策略。可选的值包括 no(不重启)、on-failure[:MAX-RETRIES](指定最大重试次数,失败后重新启动)、always(总是重启容器)等等

update命令只能修改容器的配置项,不能修改镜像的配置。如果需要修改镜像的配置,需要使用docker commit命令创建新的镜像
exec 在运行的容器中执行命令 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] -d, --detach 以后台模式运行容器;
-i, --interactive 以交互模式运行容器;
-t, --tty 为容器分配一个伪终端,通常与-i组合使用
-e, --env "env_var=value" 设置环境变量,设置多个环境变量使用多个-e参数实现;
--env-file envfile 从指定文件读入环境变量,文件每行是key=value,即代表一个环境变量;
-w, --workdir 指定容器内的工作目录

容器操作

命令 功能 语法 常用OPTIONS
ps 查询已创建的容器 docker ps [OPTIONS] -a, --all 查询所有容器,默认仅显示运行中的容器;
-f, --filter filter 使用指定的条件过滤查询内容,如docker ps -f status=exited查询所有停止状态的容器;
--format string 指定返回值的格式,如:table、json等等,默认 table;
-n, --last int 查询最近创建的n个容器(所有状态的);
-l, --latest 查询最近创建的1个容器(所有状态的);
-q, --quiet 仅显示容器IDs;
-s, --size 显示总文件大小
inspect 获取容器或镜像的底层信息 docker inspect [OPTIONS] NAME|ID [NAME|ID...] -f, --format string 按指定的模板返回信息;
-s, --size 如果是容器,返回总文件大小;
--type 为指定类型返回json数据,如 docker inspect --type=container webapp 获取类型为容器,名为webapp的容器详细信息
top 获取运行中的容器进程信息 docker top CONTAINER [ps OPTIONS] ps OPTIONS 表示可选的 ps 命令选项,用于指定要列出的进程的详细信息(注意这里的ps不是docker ps,而是Linux中的ps命令)
docker top mycontainer -eo pid,user,%cpu,%mem,command 指定显示进程的 PID、用户名、CPU 占用率、内存占用率和命令名称
attach 使用户进入正在运行的容器终端 docker attach [OPTIONS] CONTAINER --detach-keys 指定从容器中分离的键序列,默认为 ctrl-c,如 docker attach --detach-keys "ctrl-q" mycontainer,则ctrl-q组合键代替默认的ctrl-c来终止mycontainer容器的终端连接;
--no-stdin 不将标准输入流输入到终端中
--sig-proxy 将附加的信号发送到容器的进程(默认为true)
events 从服务器获取实时事件 docker events [OPTIONS] -f, --filter filter 使用指定条件对查询结果进行过滤
--since string 查询指定日期或时间后产生的事件,string为秒级的时间戳或者"2023-08-05"类似格式的日期
--until string 查询指定日期或时间前产生的事件,string为秒级的时间戳或者"2023-08-05"类似格式的日期
logs 获取同期日志信息 docker logs [OPTIONS] CONTAINER -f, --follow 跟踪日志输出;
--since string 显示指定时间或日期之后的日志 (e.g. “2023-08-04”) or relative (e.g. “42m” for 42 minutes)
-n, --tail int 显示最近n条日志记录(默认是all);
-t, --timestamps 显示时间戳信息;
--until string 显示指定时间或日期之前的日志 (e.g. “2023-08-04T20:36:55.997861800Z”) or relative (e.g. “1h” for 1 hour)
注意:logs仅能显示标准输出、标准错误日志信息
wait 阻塞容器直到容器停止运行,然后返回退出代码 docker wait CONTAINER [CONTAINER...] OPTIONS
export 将文件系统作为一个tar归档文件导出到STDOUT docker export [OPTIONS] CONTAINER -o, --output string 将输出写到文件,代替STDOUT
port 查看容器的端口映射信息 docker port CONTAINER [PRIVATE_PORT[/PROTO]] 输出的端口映射信息格式:/ -> :
是容器内部的端口号, 是协议类型(如 tcp 或 udp), 是主机的 IP 地址, 是主机上映射的端口号
如果想要查看本地主机上的端口和容器内部的端口之间的映射关系,可以使用 docker ps 命令,方法如下:
$ docker ps -a --format "{{.ID}}\t{{.Names}}\t{{.Ports}}"
stats 显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等 docker stats [OPTIONS] [CONTAINER...] -a, --all 显示所有容器的资源使用情况,无该参数,则仅显示运行状态的;
--format string 指定返回值的模板文件,如table(默认)、json等等;
--no-stream 仅展示当前资源使用情况,不实时更新;
--no-trunc 不截断输出
输出详情介绍:
CONTAINER IDNAME: 容器 ID 与名称;
CPU %MEM %: 容器使用的 CPU 和内存的百分比;
MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量;
NET I/O: 容器通过其网络接口发送和接收的数据量;
BLOCK I/O: 容器从主机上的块设备读取和写入的数据量;
PIDs: 容器创建的进程或线程数

容器rootfs命令

命令 功能 语法 常用OPTIONS
commit 用于将容器的当前状态(文件系统、配置等)保存为一个新的镜像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -a, --author:指定新镜像的作者信息;
-c, --change:在新镜像上执行指定的 Dockerfile 命令;
-m, --message:在新镜像上添加指定的提交信息;
-p, --pause:在保存容器状态时暂停容器(默认是true)
CONTAINER 是指要保存状态的容器的 ID 或者名称
REPOSITORYTAG 是新镜像的仓库名和标签
cp 用于容器和主机之间的文件或目录数据拷贝 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | -
docker cp [OPTIONS] SRC_PATH | - CONTAINER:DEST_PATH
使用’-‘作为源文件从stdin中读取tar存档文件,并将其解压缩到容器中的目录目标
使用’-'作为目标,流式传输文件的tar存档容器源到标准输出
-a, --archive 在复制文件时保留文件的元数据,例如文件权限、所有者、组、时间戳等;
-L, --follow-link 在复制文件时跟踪符号链接,并将其内容复制到目标位置
如果不使用 -L 参数,则在复制文件时会忽略符号链接,复制的是该符号链接指向的原始文件;
-q, --quiet 拷贝过程中禁止输出进度。如果没有附加终端,则自动抑制进度输出
diff 检查容器内文件或目录的更改情况 docker diff CONTAINER OPTIONS
该命令可以比较容器启动后对文件系统执行的更改与初始镜像的文件系统之间的差异

镜像仓库

命令 功能 语法 常用OPTIONS
login 登陆到一个Docker镜像仓库 docker login [OPTIONS] [SERVER] -p, --password string 用户密码
--password-stdin 从标准输入获取密码
-u, --username string 用户名
SERVER 如果不指定,默认为Docker hub 官方仓库
logout 登出一个Docker镜像仓库 docker logout [SERVER] SERVER 如果不指定,默认为Docker hub 官方仓库
pull 从镜像仓库中拉取或者更新指定镜像 `docker pull [OPTIONS] NAME[:TAG @DIGEST]`
push 上传镜像到镜像仓库 docker push [OPTIONS] NAME[:TAG] -a, --all-tags 上传指定镜像的所有tag版本的镜像
--disable-content-trust 跳过镜像数字签名校验,默认是true
-q, --quiet 简化镜像上传过程中输出信息;
search 搜索Docker Hub仓库镜像 docker search [OPTIONS] TERM -f, --filter filter 对查询结果进行过滤
如:
-f stars=100 表示过滤出stars数大于等于100的镜像;
-f is-official=true 表示过滤出官方的镜像;
-f is-automated=true 表示过滤出自动构建的镜像;
--format string 按模板输出查询结果
--limit int 限制输出结果数量
--no-trunc 显示完整信息

本地镜像管理

命令 功能 语法 常用OPTIONS
images 列出本地镜像 docker images [OPTIONS] [REPOSITORY[:TAG]] -a, --all 列出所有镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests 显示镜像的digests信息;
-f, --filter filter 使用指定条件对结果进行过滤显示;如:
-f "reference=":查找具有指定镜像名称 的镜像;
--format string 按指定模板显示输出信息;
--no-trunc 输出信息不截断;
-q, --quiet 仅显示镜像IDs
rmi 删除本地镜像 docker rmi [OPTIONS] IMAGE [IMAGE...] -f, --force 强制删除;
--no-prune 不移除该镜像的过程镜像,默认移除;
image prune 删除所有未使用的镜像 docker image prune [OPTIONS] -a, --all删除所有未使用的镜像,而不仅是挂起状态的
--filter filter 使用指定条件过滤出要删除的镜像,如 --filter until= 删除指定时间之前创建的镜像
-f, --force 强制删除,不再确认
tag 给镜像打tag标签 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 类似与git的tag功能
TAG 如果不指定,默认为latest;
docker tag nginx:latest my-nginx:latest
docker tag nginx:latest my-nginx:v1.0
nginx:latest镜像标记两个新的标签:my-nginx:latestmy-nginx:v1.0
build 构建镜像 docker buildx build [OPTIONS] PATH | URL | - -f, --file string 指定构建镜像使用的dockerfile文件,这个文件可以是本地的或者URL获得的或者STDIN标准输入获得的;
--network string 设置镜像使用的网络模式,默认为bridge;
--no-cache 忽略构建缓存;
--pull 构建镜像时总是尝试去拉取最新版本的基础镜像;
-q, --quiet 简化构建过程的输出信息,构建成功后返回镜像id;
-t, --tag stringArray 给生成的镜像设置名称和tag标签,格式为 :,tag省略,则默认为latest
history 查看镜像历史 docker history [OPTIONS] IMAGE -format string 指定输出内容的格式;
-H, --human 以可读的格式打印镜像大小和日期,默认为true;
--no-trunc 不截断输出信息;
-q, --quiet 仅输出镜像IDs
save 将指定镜像保存为tar归档 docker save [OPTIONS] IMAGE [IMAGE...] -o, --output string 指定归档信息保存的文件,默认是输出到STDOUT
load 从tar归档或STDIN导入镜像 docker load [OPTIONS] -i, --input string 指定tar归档文件进行导入,默认是从STDIN导入;
-q, --quiet 简化导入过程中的输出信息
import 用于将文件系统打包成镜像,并导入到 Docker 镜像库中 docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] 将本地文件系统、tar 文件以及远程 URL 路径中的文件系统、STDIN等导入到 Docker 镜像库中,生成新的镜像
-c, --change list 为导入的镜像设置dockerfile中的指令,如-c CMD ["echo", "hello world!"]
-m, --message string 为创建的镜像,提交说明信息;
--platform string 用于指定构建镜像的目标平台

Docker 信息

命令 功能 语法 常用OPTIONS
info 查看docker客户端和服务端信息 docker info [OPTIONS] -f, --format string 按指定模板显示输出信息;
默认为pretty格式,还支持json格式、Go template格式
version 查看docker版本信息 docker version [flags] -f, --format string 按指定模板显示输出信息;
默认为pretty格式,还支持json格式
--kubeconfig string Kubernetes 配置文件信息

最后

由于个人能力有限,以上命令总结难免有理解或翻译的错误,更详细、更准确的,还请参考官方帮助文档:
Use the Docker command line | Docker Documentation

你可能感兴趣的:(Docker,docker,学习,笔记)