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 构建应用、自定义网络实现服务互联)加深理解。

更多推荐