【Docker】Docker系统性知识体系与命令大全(镜像、容器、数据卷、网络、仓库)

文章目录

  • [Docker 全方位知识体系](#Docker 全方位知识体系)
    • [一、Docker 核心概念](#一、Docker 核心概念)
    • [二、Docker 基础命令](#二、Docker 基础命令)
      • [1. 镜像管理命令](#1. 镜像管理命令)
      • [2. 容器管理命令](#2. 容器管理命令)
    • [三、Docker 数据卷(Volumes)](#三、Docker 数据卷(Volumes))
      • [1. 数据卷管理命令](#1. 数据卷管理命令)
      • [2. 容器挂载数据卷](#2. 容器挂载数据卷)
    • [四、Dockerfile 与自定义镜像](#四、Dockerfile 与自定义镜像)
      • [1. Dockerfile 常用指令](#1. Dockerfile 常用指令)
      • [2. 构建自定义镜像命令](#2. 构建自定义镜像命令)
    • [五、Docker 网络](#五、Docker 网络)
      • [1. 网络模式](#1. 网络模式)
      • [2. 网络管理命令](#2. 网络管理命令)
    • [六、Docker 仓库](#六、Docker 仓库)
    • [七、Docker 系统与高级命令](#七、Docker 系统与高级命令)
    • 总结

Docker 全方位知识体系


一、Docker 核心概念

概念 说明
镜像 只读的模板,包含创建容器的文件系统(如操作系统、软件、代码等)。
容器 镜像的运行实例,可被启动、停止、删除,彼此隔离。
仓库 存储镜像的场所,分为公共仓库(如 Docker Hub)和私有仓库。

二、Docker 基础命令

1. 镜像管理命令

命令 说明 常用参数
docker pull <镜像名> 从仓库拉取镜像 -a:拉取所有标签;--platform <平台>:指定平台(如 linux/amd64
docker images 列出本地镜像 -a:显示中间镜像;-q:仅显示镜像 ID
docker rmi <镜像ID/名> 删除本地镜像 -f:强制删除;--no-prune:保留未打标签的父镜像
docker save -o <文件> <镜像> 将镜像保存为 tar 文件 -o:指定输出文件
docker load -i <文件> 从 tar 文件加载镜像 -i:指定输入文件
docker tag <源镜像> <目标镜像> 为镜像打标签(用于推送到仓库) 格式:docker tag SOURCE[:TAG] TARGET[:TAG]
docker history <镜像> 查看镜像构建历史 -H:人类可读格式显示大小
docker inspect <镜像> 查看镜像详细信息(元数据、层信息等) --format <模板>:格式化输出(如 {``{.Id}}

2. 容器管理命令

命令 说明 常用参数
docker run <镜像> 创建并启动容器 -d:后台运行;-it:交互模式;--name <名称>:指定容器名; -p <主机端口:容器端口>:端口映射;-v <卷:容器路径>:挂载数据卷; --network <网络>:指定网络;--rm:容器退出后自动删除; -e <KEY=VALUE>:设置环境变量;--entrypoint <命令>:覆盖入口点
docker ps 列出运行中的容器 -a:列出所有容器(包括停止的);-q:仅显示容器 ID;-s:显示大小
docker stop <容器ID/名> 停止运行中的容器 -t <秒>:等待时间后强制停止
docker start <容器ID/名> 启动已停止的容器
docker restart <容器ID/名> 重启容器
docker kill <容器ID/名> 强制停止容器
docker rm <容器ID/名> 删除容器 -f:强制删除运行中容器;-v:删除关联的数据卷
docker exec -it <容器> <命令> 在运行容器中执行命令(如 bash -i:保持输入打开;-t:分配伪终端
docker attach <容器> 附加到运行中的容器(查看输出或交互)
docker logs <容器> 查看容器日志 -f:实时跟随日志;--tail <行数>:显示最后 N 行
docker cp <源路径> <目标路径> 容器与主机间复制文件 格式:docker cp CONTAINER:SRC DESTdocker cp SRC CONTAINER:DEST
docker export -o <文件> <容器> 导出容器文件系统为 tar 文件 -o:指定输出文件
docker import <文件> <镜像名> 从 tar 文件导入为镜像
docker rename <旧名> <新名> 重命名容器
docker pause/unpause <容器> 暂停/恢复容器
docker port <容器> 查看容器端口映射
docker top <容器> 查看容器内进程
docker stats <容器> 查看容器资源使用统计(CPU、内存等)
docker diff <容器> 查看容器文件系统变化(新增/修改/删除的文件)
docker commit <容器> <镜像名> 从容器创建新镜像(自定义镜像) -a <作者>:指定作者;-m <信息>:提交说明;-c <指令>:应用 Dockerfile 指令

三、Docker 数据卷(Volumes)

1. 数据卷管理命令

命令 说明 常用参数
docker volume create <卷名> 创建数据卷 --driver <驱动>:指定驱动(默认 local);--opt <key=value>:设置驱动选项
docker volume ls 列出数据卷 -q:仅显示卷名
docker volume inspect <卷名> 查看数据卷详细信息
docker volume rm <卷名> 删除数据卷 -f:强制删除
docker volume prune 删除未使用的数据卷 -a:删除所有未使用卷;--force:不提示确认

2. 容器挂载数据卷

  • 方式 1:-v(简洁)
    docker run -v <卷名>:<容器路径> <镜像>

    或直接挂载主机目录:docker run -v /主机路径:/容器路径 <镜像>

  • 方式 2:--mount(更灵活,推荐生产环境)
    docker run --mount source=<卷名>,target=<容器路径> <镜像>

    支持 readonly(只读)、type=bind(绑定主机目录)等选项。


四、Dockerfile 与自定义镜像

1. Dockerfile 常用指令

指令 说明 示例
FROM 指定基础镜像(必须为第一条指令) FROM ubuntu:20.04FROM node:18 AS builder(多阶段构建)
LABEL 添加元数据(如作者、描述) LABEL author="zhangsan" version="1.0"
RUN 执行命令(构建镜像时运行) RUN apt-get update && apt-get install -y nginx
CMD 容器启动时默认命令(可被 docker run 参数覆盖) CMD ["nginx", "-g", "daemon off;"](推荐 exec 格式)
ENTRYPOINT 容器入口点(不可被 run 参数直接覆盖,需结合 CMD 传参) ENTRYPOINT ["java", "-jar"],配合 CMD ["app.jar"]
EXPOSE 声明容器监听端口(仅文档作用,需 -p 实际映射) EXPOSE 80 443
ENV 设置环境变量 ENV JAVA_HOME=/usr/lib/jvm/java-11
ADD 复制文件(支持 URL、自动解压 tar) ADD app.tar.gz /appADD https://example.com/file /app
COPY 复制本地文件(推荐,仅复制不做额外处理) COPY ./src /app/src
VOLUME 创建数据卷挂载点 VOLUME ["/data"]
USER 指定运行容器的用户 USER nginx
WORKDIR 设置工作目录(后续指令的默认目录) WORKDIR /app
ARG 构建时参数(可通过 --build-arg 传递) ARG VERSION=1.0,使用:RUN echo $VERSION
HEALTHCHECK 健康检查指令 `HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/

2. 构建自定义镜像命令

命令 说明 常用参数
docker build -t <镜像名> <上下文路径> 基于 Dockerfile 构建镜像 -t:标记镜像名和标签;-f <Dockerfile路径>:指定 Dockerfile 文件; --build-arg <KEY=VALUE>:传递构建参数;--no-cache:不使用缓存; --platform <平台>:指定目标平台

五、Docker 网络

1. 网络模式

模式 说明
bridge 默认模式,容器连接到虚拟网桥,彼此隔离,可通过端口映射访问。
host 共享主机网络栈,容器直接使用主机 IP 和端口,性能最高但隔离性弱。
none 无网络,容器无法与外界通信。
container 共享另一个容器的网络栈(如 Sidecar 模式)。
自定义网络 用户创建的网络(推荐),支持 DNS 解析、容器名互访,更安全灵活。

2. 网络管理命令

命令 说明 常用参数
docker network create <网络名> 创建自定义网络 --driver <驱动>:指定驱动(默认 bridge); --subnet <子网>:指定子网(如 172.20.0.0/16); --gateway <网关>:指定网关;--opt <key=value>:设置驱动选项
docker network ls 列出网络 -q:仅显示网络 ID
docker network inspect <网络名> 查看网络详细信息(包含连接的容器)
docker network rm <网络名> 删除网络
docker network prune 删除未使用的网络 --force:不提示确认
docker network connect <网络> <容器> 将容器连接到网络 --ip <IP>:指定容器 IP;--alias <别名>:设置网络别名
docker network disconnect <网络> <容器> 断开容器与网络的连接

六、Docker 仓库

命令 说明 常用参数
docker login <仓库地址> 登录仓库(默认 Docker Hub) -u <用户名>-p <密码>--password-stdin:从标准输入读取密码
docker logout 登出仓库
docker push <镜像名> 推送镜像到仓库(需先 tag 为仓库格式) 格式:docker push <用户名/仓库名:标签>
docker search <关键词> 搜索 Docker Hub 镜像 --limit <数量>:限制结果数;--filter is-official=true:仅显示官方镜像

七、Docker 系统与高级命令

命令 说明 常用参数
docker system info 查看 Docker 系统信息(版本、容器数、镜像数等)
docker system df 查看磁盘使用情况(镜像、容器、数据卷占用)
docker system prune 清理未使用资源(镜像、容器、网络、数据卷) -a:清理所有未使用资源;--volumes:同时清理数据卷;--force:不提示
docker events 实时监听 Docker 事件(如容器启动、停止) --filter <条件>:过滤事件(如 event=start

总结

Docker 知识体系围绕镜像、容器、数据卷、网络、仓库 五大核心展开,通过上述命令可完成从镜像拉取/构建、容器运行/管理、数据持久化、网络配置到仓库交互的全流程操作。建议结合场景实践(如用 Dockerfile 构建应用、自定义网络实现服务互联)加深理解。

相关推荐
wuxingge2 小时前
docker部署私人影音库Plex
docker·容器
花千树-0102 小时前
JMeter 入门与进阶指南:从零开始构建你的压测环境
java·spring boot·jmeter·性能优化·压力测试·可用性测试
浅月流苏2 小时前
Claude Code安装以及idea集成Claude Code的使用教程(基础篇)
java·ai编程·claude code
EmbeddedCore2 小时前
详解新设备接入网络:DHCP、ARP、ICMP交互流程(附原理+实操备注)
网络
Arthas2172 小时前
互联网大厂Java面试实战:从基础到架构的渐进式考察
java·spring boot·微服务·面试·技术栈
yuanlaile2 小时前
Linux Docker、Swarm、K8s分布式部署全集解析
linux·docker·kubernetes·k8s实战
取码网2 小时前
2025最新口红机防篡改版本源码
android·java·javascript
东离与糖宝2 小时前
2026 Java AI框架选型:Spring AI/LangChain4j企业级对比
java·人工智能
CQU_JIAKE2 小时前
4.2【A】
网络