计算机系统
5G云计算
LINUX Docker及docker-conpose相关命令
一、Docker 常用命令
1、镜像管理
1.拉取镜像
docker pull <选项> <镜像名>:<标签>|<特定镜像版本的唯一标识符>
选项 用途 -a,–all-tags 下载仓库中指定镜像名所有标签的镜像 –disable-content-trust 跳过镜像验证。默认Docker使用内容信任机制验证镜像的完整性 –platform string 如果注册表支持多平台镜像,可以指定平台(linux/amd64、windows/amd64) -q,–quit 抑制详细输出。拉取完成后仅显示镜像ID。
2.列出本地镜像
docker images <选项> [仓库[:标签]]
选项 用途 -a,–all 列出所有镜像(包括中间层镜像) –digests 显示镜像的摘要信息 -f,–filter 根据条件过滤镜像列表 常用过滤器: dangling=true:列出悬空镜像(未被任何容器使用镜像) label=<key>或label=<key>=<value>:根据标签过滤镜像 before=<image>:列出在指定镜像之前创建的镜像 since=<image>:列出在指定镜像之后创建的镜像 –format 使用Go模板格式化输出 常用模板: {{.Repository}}:镜像仓库名称。 {{.Tag}}:镜像标签。 {{.ID}}:镜像ID。 {{.Size}}:镜像大小。 –no-trunc 显示完整的镜像ID,不截断 -q,–quite 只显示镜像ID –help 显示帮助信息
3.删除镜像
docker rmi <镜像ID或名称1> <镜像ID或名称2> <镜像ID或名称3>
#可同时删除多个镜像
选项 用途 -f,–force 强制删除镜像,即使有容器正在使用它(可能导致正在运行容器出现问题) –no-prune 保留未被标记的父镜像(即中间层镜像) -a,–all 删除所有未使用的镜像(悬空镜像) –help 显示帮助信息
4.构建镜像(从 Dockerfile)
docker build <选项> <Dockerfile路径> | URL | -
#构建镜像默认当前所在目录
选项 用途 -f,–file 指定Dockerfile的路径构建镜像 -t,–tag 为构建的镜像指定名称和标签 –build-arg 设置构建时的变量(在 Dockerfile 中使用 ARG 定义) –no-cache 禁用缓存,从头开始构建镜像 –pull 总是尝试拉取基础镜像的最新版本 –target 指定多阶段构建中的某个阶段作为最终镜像 –platform 指定构建的目标平台(linux/amd64、linux/arm64) –label 为镜像添加元数据标签 –rm 构建成功后删除中间容器(默认启用) -q,–quite 静默模式,只输出镜像ID -o,–output 将构建结果导出到指定目录 –progress 设置构建进度输出格式(auto、plain、tty) –secret 传递敏感数据到构建过程中 –ssh 允许在构建过程中使用SSH密钥 –network 设置构建过程中的容器的网络模式(host、bridge) –add-host 在构建过程中添加自定义主机到IP的映射 –shm-size 设置构建过程中容器的共享内存大小 –ulimit 设置构建过程中容器的资源限制 –help 显示帮助信息
5.推送镜像到仓库
docker push <选项> <镜像名>:<标签>
选项 用途 –disable-content-trust 跳过镜像的内容信任验证(默认启用) -q,–quite 静默模式,只输出镜像的摘要信息 –help 显示帮助信息
6.从 .tar 文件加载镜像
docker load -i FILE.tar
#只能加载由 docker save 导出的 tar 文件
#与 docker import 的区别
docker load: 用于加载由 docker save 导出的镜像(包含完整的镜像历史和元数据)
docker import: 用于从文件系统快照创建镜像(不包含历史记录和元数据)
选项 用途 -i,–input 指定要加载的tar文件路径。可用<标准输入读取或cat+管道符输入 -q,–quite 静默模式,不显示加载过程中的输出信息 –help 显示帮助信息
7.将镜像保存为 .tar 文件
docker save -o FILE.tar IMAGE
#可保存多个镜像到同一个tar文件内
#与 docker export 的区别
docker save: 保存的是镜像(包含完整的镜像历史和元数据)。
docker export: 保存的是容器的文件系统快照(不包含历史记录和元数据)。
选项 用途 -o,–output 指定保存的tar文件路径及文件名 –help 显示帮助信息
8.搜索镜像
docker search TERM
选项 用途 -f,–filter 根据条件过滤搜索结果 常用过滤器: is-official:是否官方镜像 is-automated:是否自动构建 stars:镜像的星标数 –format 使用Go模板格式化输出 –limit 限制搜索结果的数量 –no-trunc 不截断输出,显示完整的镜像描述 –help 显示帮助信息
9.查看镜像构建历史
docker history IMAGE
选项 用途 –no-trunc 不截断输出,显示完整的镜像描述 -q,–quite 静默模式,只输出镜像层ID –format 使用Go模板格式化输出 -H,–human 以人类可读的格式显示镜像层大小(默认已启用) –help 显示帮助信息
10.为镜像打标签或修改标签
docker tag SOURCE_IMAGE TARGET_IMAGE
#与 docker commit 的区别
docker tag: 为现有镜像添加新标签,不创建新镜像
docker commit: 从容器的更改创建新镜像
2、容器管理
1.启动容器
docker run [选项] <镜像名> [command] [arg]
#command:容器启动后执行的命令覆盖Dockerfile中的CMD
#arg:传递给命令的参数
选项 用途 -d,–detach 以分离模式(后台)运行容器 –rm 容器推出后自动删除容器 -it 以交互模式运行容器 –name 指定容器名称 –network 指定容器的网络模式(bridge、host、none) -p,–publish 将容器端口映射到主机端口(主机端口:容器端口) –dns 指定容器的DNS服务器 -m,–memory 限制容器的内存使用量 –cpus 限制容器使用的CPU数量 –cpu-shares 设置CPU权重(默认1024) –ulimit 设置容器的资源限制(如文件描述符数量) -v,–volume 挂在主机目录或卷到容器中 –mount 更灵活的挂载方式(支持卷、绑定挂载等) –tmpfs 挂在临时文件系统到容器中 -e,–env 设置容器的环境变量 –env-file 从文件加载环境变量 –user 指定容器运行的用户 –cap-add 添加Linux能力(如SYS_ADMIN) –cap-drop 移除Linux能力 –security-opt 设置安全选项(如seccomp配置文件) –log-driver 指定日志驱动(如json-file、syslog) –log-opt 设置日志驱动的选项(max-size,max-file) –restart 设置容器的重启策略(no、on-failure、always) –entrypoint 覆盖镜像的默认入口点 –add-host 添加自定义主机到IP的映射 –help 显示帮助信息
2.列出运行中的容器
docker ps
选项 用途 -a,–all 显示所有容器,包括正在运行的和已停止的 -f,–filter 根据条件过滤容器。可使用多个过滤器 –format 使用Go模板格式化输出,同上images -n,–last 显示最后创建的n个容器(包括所有状态) -l,–latest 显示最新创建的容器(包括所有状态) -q,–quite 仅显示容器ID -s,–size 显示容器的大小(文件系统大小) –no-trunc 不截断输出,显示完整的容器ID和命令 –help 显示帮助信息
3.启动/停止/重启容器
docker start <容器ID或名称>
docker stop <容器ID或名称>
docker restart <容器ID或名称>
start选项 用途 -a,–attach 附加到容器的标准输入、输出和错误流 -i,–interactive 附加到容器的标准输入(通常与-a一起用) –detach-keys 设置从容器分离的快捷键(默认是Ctrl-p Ctrl-q) –help 显示帮助信息
stop选项 用途 -t,–time 设置停止容器的超时时间(默认10s),会先发送SIGTERM 信号,超时后再发送 SIGKILL 信号 –help 显示帮助信息
restart选项 用途 -t,–time 设置停止容器的超时时间(默认10s),与docker stop相同 –help 显示帮助信息
4.在正在运行的容器中执行命令或与之交互
docker exec <选项> <容器ID或名称>
docker exec -it <选项> <容器ID或名称> /bin/bash //进入容器终端
选项 用途 -d,–detach 在后台运行命令(分离模式) -e,–env 设置环境变量 -i,–interactive 保持标准输入(stdin)打开,即使没有附加 -t,–tty 分配一个伪终端 -u,–user 指定执行命令的用户名或UID -w,–workdir 指定命令的工作目录 –help 显示帮助信息
5.查看容器日志
docker logs <容器ID或名称>
选项 用途 -f,–follow 实时跟踪日志输出 –tail 显示日志的最后n行(默认显示所有日志) -t,–timestamps 显示日志的时间戳 –since 先是从指定时间开始的日志(支持相对时间或绝对时间) –until 显示到指定时间结束的日志(支持相对时间或绝对时间) -n,–max-count 显示指定数量的日志行 –details 显示日志的额外详细信息(如日志来源) –help 显示帮助信息
6.删除容器
docker rm <容器ID或名称>
选项 用途 -f,–force 强制删除正在运行的容器(使用SIGKILL信号) -v,–volumes 删除与容器关联的匿名卷 -l,–link 删除指定的链接(已弃用,不推荐使用) –help 显示帮助信息
7.复制文件到容器
docker cp <本地路径> <容器名>:<容器路径>
选项 用途 -a,–archive 以归档模式复制文件,保留文件的所有元信息(权限、所有权等) -L,–follow 始终跟随符号链接(复制链接指向的实际文件或目录) –help 显示帮助信息
8.查看容器详细信息
docker inspect <容器名>
选项 用途 -f,–format 使用 Go 模板格式化输出 {{.Architecture}}:查看容器架构 -s,–size 显示容器文件系统的总大小(仅适用于容器) –type 指定要检查的对象类型(container、image、network、volume等) –help 显示帮助信息
3、网络管理
1.查看网络列表
docker network ls [OPTIONS]
选项 用途 -f,–filter 根据条件过滤网络 -q,–quite 仅显示网络 ID
2.创建自定义网络
docker network create [OPTIONS] NETWORK_NAME
选项 用途 -d,–driver 指定网络驱动(bridge、overlay、host)默认bridge –subnet 指定子网(CIDR格式) –gateway 指定网关地址 –ip-range 指定IP地址范围 –label 为网络添加元数据标签
3.显示一个或多个网络的详细信息
docker network inspect [OPTIONS] NETWORK [NETWORK...]
选项 用途 -f,–format 使用 Go 模板格式化输出
4.将容器连接到网络
docker network connect [OPTIONS] NETWORK CONTAINER
选项 用途 –ip 指定容器的 IP 地址 –alias 为容器添加网络别名
5.将容器从网络断开连接
docker network disconnect [OPTIONS] NETWORK CONTAINER
6.删除所有未使用的网络
docker network prune [OPTIONS]
选项 用途 -f,–force 强制断开连接 –filter 根据条件过滤网络
7.删除一个或多个网络
docker network rm NETWORK [NETWORK...]
4、数据卷管理
1.列出数据卷
docker volume ls [OPTIONS]
选项 用途 -f,–filter 根据条件过滤卷 -q,–quite 仅显示卷名
2.删除未使用的数据卷
docker volume prune [OPTIONS]
选项 用途 -f,–force 强制删除,无需确认 –filter 根据条件过滤卷
3.创建一个新的卷
docker volume create [OPTIONS] VOLUME_NAME
选项 用途 -d,-driver 指定卷驱动(默认local) –label 为卷添加元数据标签 –opt 指定驱动特定的选项(device、o)
4.显示一个或多个卷的详细信息
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
选项 用途 -f,–format 使用 Go 模板格式化输出
5.删除一个或多个卷
docker volume rm VOLUME [VOLUME...]
5、系统与维护
1.清理未使用的镜像、容器、网络
docker system prune [OPTIONS]
选项 用途 -a,–all 删除所有未使用的资源(包括未使用的镜像和构建缓存) –volumes 删除未使用的卷 -f,–force 强制删除,无需确认 –filter 根据条件过滤资源
2.显示 Docker 磁盘使用情况
docker system df [OPTIONS]
#输出字段:
TYPE: 资源类型(如镜像、容器、卷、构建缓存等)。
TOTAL: 资源总数。
ACTIVE: 正在使用的资源数量。
SIZE: 资源占用的磁盘空间。
RECLAIMABLE: 可回收的磁盘空间。
3.显示 Docker 守护进程的实时事件
docker system events [OPTIONS]
选项 用途 -f,–filter 根据条件过滤事件 –since 显示从指定时间开始的事件 —until 显示到指定时间为止的事件
4.显示 Docker 系统信息
docker system info [OPTIONS]
#输出内容:
Docker 版本信息
容器和镜像的数量
存储驱动和文件系统信息。
网络和日志配置。
系统资源(如 CPU、内存)信息。
5.实时查看容器资源占用
docker stats [OPTIONS] [CONTAINER...]
#输出字段
字段名称 说明
CONTAINER ID 容器的 ID。
NAME 容器的名称。
CPU % 容器使用的 CPU 百分比。
MEM USAGE / LIMIT 容器使用的内存量及内存限制。
MEM % 容器使用的内存百分比。
NET I/O 容器的网络输入/输出量。
BLOCK I/O 容器的块设备输入/输出量。
PIDS 容器中的进程数。
选项 用途 -a,–all 显示所有容器(包括未运行的容器)的统计信息 –format 使用 Go 模板格式化输出 –no-stream 仅显示一次统计信息,而不是实时更新 –no-trunc 显示完整的输出(不截断) –help 显示帮助信息
6.查看 Docker 系统信息
docker info [OPTIONS]
#与docker system info功能完全一致
7.查看 Docker 版本
docker version [OPTIONS]
#输出内容
docker version 的输出包含以下两部分:
#客户端信息(Client):
Version: Docker 客户端版本。
API version: 客户端使用的 Docker API 版本。
Go version: 编译 Docker 客户端使用的 Go 语言版本。
Git commit: Docker 客户端的 Git 提交哈希。
Built: Docker 客户端的构建时间。
OS/Arch: 客户端运行的操作系统和架构。
Context: Docker 上下文(如 default)。
#服务器信息(Server):
Version: Docker 服务器(守护进程)版本。
API version: 服务器使用的 Docker API 版本。
Go version: 编译 Docker 服务器使用的 Go 语言版本。
Git commit: Docker 服务器的 Git 提交哈希。
Built: Docker 服务器的构建时间。
OS/Arch: 服务器运行的操作系统和架构。
Experimental: 是否启用了实验性功能。
Kernel Version: 服务器的内核版本。
OSType: 服务器的操作系统类型(如 linux)。
Architecture: 服务器的架构(如 x86_64)。
Docker Root Dir: Docker 的根目录路径。
Index Server Address: Docker Registry 的地址(如 https://index.docker.io/v1/)。
选项 用途 -f,–format 使用 Go 模板格式化输出 –help 显示帮助信息
二、Docker Compose 常用命令
1、基本操作
1.启动所有服务
docker-compose up [OPTIONS] [SERVICE...]
选项 用途 -d,–detach 在后台运行容器( detached 模式) –env-file 指定环境变量文件 –build 启动前重新构建镜像 –no-build 不构建镜像,即使镜像缺失 –force-recreate 强制重新创建容器,即使配置未更改 –no-recreate 如果容器已存在,则不重新创建 –no-deps 不启动依赖的服务 –scale 指定服务的实例数量(如 web=3) –abort-on-container-exit 如果有容器退出,则停止所有容器 –remove-orphans 删除未在 docker-compose.yml中定义的容器 –exit-code-from 返回指定服务的退出代码 -t,–timeout 设置容器停止的超时时间(默认为 10 秒) –quite-pull 拉取镜像时不显示进度信息 –renew-anon-volumes 重新创建匿名卷,而不是复用 –no-log-prefix 不显示日志前缀(容器名称) –no-color 禁用彩色输出 –help 显示帮助信息并退出
2.停止服务并删除容器
docker-compose down [OPTIONS]
选项 用途 –rmi 删除镜像 可选值: all:删除所有镜像。 local:仅删除未标记的镜像 -v,–volumes 删除与容器关联的命名卷和匿名卷 –remove-orphans 删除未在 docker-compose.yml 中定义的容器 -t,–timeout 设置停止容器的超时时间(默认为 10 秒) –help 显示帮助信息
3.启动已存在的服务
docker-compose start [OPTIONS] [SERVICE...]
SERVICE: 指定要启动的服务名称(在 docker-compose.yml 中定义)。如果未指定,则启动所有已停止的服务。
4.停止运行中的服务
docker-compose stop [OPTIONS] [SERVICE...]
SERVICE: 指定要停止的服务名称(在 docker-compose.yml 中定义)。如果未指定,则停止所有正在运行的服务。
5.重启服务
docker-compose restart [OPTIONS] [SERVICE...]
SERVICE: 指定要重启的服务名称(在 docker-compose.yml 中定义)。如果未指定,则重启所有正在运行的服务。
2、服务管理
1.查看所有服务的状态
docker-compose ps [OPTIONS] [SERVICE...]
选项 用途 -a,–all 显示所有容器,包括已停止的容器 -q,–quite 仅显示容器 ID –services 显示服务的名称 –filter 根据条件过滤容器(如 status=running) –help 显示帮助信息
2.查看所有服务的日志
docker-compose logs [OPTIONS] [SERVICE...]
选项 用途 -f,–follow 实时跟踪日志输出 –tail 显示最后 N 行日志(默认为所有日志) -t,–timestamps 显示日志的时间戳 –no-color 禁用彩色输出 –no-log-prefix 不显示日志前缀(容器名称) –since 显示从指定时间开始的日志(如 --since 1h) –until 显示到指定时间为止的日志(如 --until 2023-10-01) –help 显示帮助信息
3.构建或重新构建服务的镜像
docker-compose build [OPTIONS] [SERVICE...]
选项 用途 –build-arg 设置构建参数(如 --build-arg VAR=value) –no-cache 构建时不使用缓存 –pull 始终尝试拉取最新版本的基础镜像 -q,–quite 静默模式,仅显示构建结果 –force-rm 强制删除中间容器 –memory 设置构建时的内存限制(如 --memory 512m) –shm-size 设置 /dev/shm 的大小(如 --shm-size 1g) –parallel 并行构建多个服务 –help 显示帮助信息
4.在指定服务的容器中执行命令
docker-compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
选项 用途 -d,–detach 在后台运行命令( detached 模式) –privileged 以特权模式运行命令 -u,–user 以指定用户身份运行命令 -T 禁用伪终端(TTY) –index 指定服务的实例索引(如 --index=1) -e,–env 设置环境变量 -w,–workdir 设置命令的工作目录 –help 显示帮助信息并退出
5.拉取服务依赖的镜像
docker-compose pull [OPTIONS] [SERVICE...]
选项 用途 –ignore-pull-failure 忽略拉取失败的镜像,继续拉取其他镜像 –parallel 并行拉取多个服务的镜像 -q,–quite 静默模式,仅显示拉取结果 –include-deps 同时拉取依赖服务的镜像 –no-parallel 禁用并行拉取 –help 显示帮助信息
3、镜像与容器
1.列出所有服务使用的镜像
docker-compose images [OPTIONS] [SERVICE...]
2.删除已停止的服务容器
docker-compose rm [OPTIONS] [SERVICE...]
选项 用途 -f,–force 强制删除容器,无需确认 -v,–volumes 删除与容器关联的匿名卷 -s,–stop 先停止容器,再删除容器 –help 显示帮助信息
3.查看服务容器的进程
docker-compose top [OPTIONS] [SERVICE...]
4、配置文件与环境
1.验证和查看 docker-compose.yml 文件的配置
docker-compose config [OPTIONS]
选项 用途 –services 显示服务名称 –volumes 显示卷配置 –hash 显示配置的哈希值(适用于单个服务) –resolve-image-digests 解析镜像的摘要(digest) –no-interpolate 禁用环境变量插值 -q,–quite 仅显示配置内容,不显示警告信息 –format 设置输出格式(如 json、yaml) –help 显示帮助信息
2.启动服务并执行一次性命令
docker-compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]
选项 用途 -d,–detach 在后台运行容器( detached 模式) –name 为容器指定一个名称 –entrypoint 覆盖默认的入口点(entrypoint) -e,–env 设置环境变量 -u,–user 以指定用户身份运行命令 –no-deps 不启动依赖的服务 –rm 运行后自动删除容器 -p,–publish 发布容器的端口到宿主机 –service-ports 启用服务的端口映射 -T 禁用伪终端(TTY) -w,–workdir 设置命令的工作目录 –help 显示帮助信息
5、扩展功能
1.扩展指定服务的容器数量(需删除旧容器)
docker-compose scale [OPTIONS] SERVICE=NUM [SERVICE=NUM...]
2.暂停服务容器
docker-compose pause [OPTIONS] [SERVICE...]
3.恢复暂停的服务容器
docker-compose unpause [OPTIONS] [SERVICE...]
4.查看服务容器的端口映射
docker-compose port [OPTIONS] SERVICE PRIVATE_PORT
选项 用途 –protocol 指定端口协议(tcp 或 udp),默认为 tcp –index 指定服务的实例索引(如 --index=1) –help 显示帮助信息
注意事项
Docker Compose V2 使用 docker compose(无连字符),V1 使用 docker-compose(带连字符)。 容器的端口到宿主机 | | --service-ports | 启用服务的端口映射 | | -T | 禁用伪终端(TTY) | | -w,–workdir | 设置命令的工作目录 | | --help | 显示帮助信息 |
5、扩展功能
1.扩展指定服务的容器数量(需删除旧容器)
docker-compose scale [OPTIONS] SERVICE=NUM [SERVICE=NUM...]
2.暂停服务容器
docker-compose pause [OPTIONS] [SERVICE...]
3.恢复暂停的服务容器
docker-compose unpause [OPTIONS] [SERVICE...]
4.查看服务容器的端口映射
docker-compose port [OPTIONS] SERVICE PRIVATE_PORT
选项 用途 –protocol 指定端口协议(tcp 或 udp),默认为 tcp –index 指定服务的实例索引(如 --index=1) –help 显示帮助信息
注意事项
Docker Compose V2 使用 docker compose(无连字符),V1 使用 docker-compose(带连字符)。 容器和数据卷的删除需谨慎,避免数据丢失。