第一部分视频内容总结严格基于视频1. 一句话核心总结本篇系统讲解了Docker的核心概念、安装方法、镜像下载、容器运行、数据持久化、网络配置、镜像构建以及Docker Compose轻量级编排帮助学习者掌握容器化部署的全流程。2. 核心概念定义Docker用容器化技术给应用程序封装独立运行环境的工具每个运行环境就是一个容器运行容器的计算机称为宿主机。容器与虚拟机的区别Docker容器之间共用同一个系统内核而每个虚拟机都包含一个操作系统的完整内核因此容器更轻、更小、启动更快。镜像容器的模板可类比软件安装包。镜像与容器的关系就像用模具做糕点——镜像模具容器糕点。镜像仓库Registry存放和分享镜像的地方官方仓库为Docker Hub。镜像地址格式[registry]/[namespace]/[image]:[tag]。Docker Compose轻量级的容器编排技术使用YML文件管理多个容器的创建、网络和协同工作。3. 分类/类型/步骤1Docker网络模式网络模式特点适用场景bridge默认容器分配内部IP如172.17.x.x与宿主机网络隔离需端口映射-p才能从外部访问单机容器默认模式自定义bridge子网同一子网内容器可通过容器名互相访问内置DNS跨子网不可通信多容器需要互相通信且不想用IPhost容器直接共享宿主机网络栈无需端口映射容器服务直接运行在宿主机端口上解决棘手的网络问题追求性能none容器不联网完全隔离的场景2Docker run常用参数参数作用示例-d后台运行detached modedocker run -d nginx-p 宿主机端口:容器端口端口映射-p 8080:80-v 宿主机目录:容器目录挂载卷绑定挂载-v /data:/app/data--mount typevolume,src卷名,dst容器目录命名卷挂载推荐用于数据持久化-e KEYVALUE传递环境变量-e MONGO_INITDB_ROOT_USERNAMEadmin--name 容器名给容器自定义名称唯一--name mynginx--restart always容器停止后自动重启生产环境常用--restart unless-stopped除手动停止外自动重启推荐生产环境-it --rm交互式进入容器退出后自动删除临时调试--network 网络名指定容器加入的网络--network mynet3数据持久化两种挂载方式对比方式命令示例特点绑定挂载Bind mount-v /宿主机路径:/容器路径直接使用宿主机目录容器内修改影响宿主机宿主机空目录会覆盖容器内内容无初始化命名卷挂载Named volume--mount typevolume,src卷名,dst/容器路径由Docker管理存储位置首次使用时自动将容器内内容复制到卷中有初始化4Docker Compose与docker run命令对应关系docker run 参数docker-compose.yml 中的字段--name容器名services下的服务名即键名镜像名image: xxx-eenvironment:-vvolumes:-pports:--network自定义子网无需指定Compose自动为所有服务创建同一子网无直接对应depends_on:控制启动顺序4. 排序或对比关系容器 vs 虚拟机容器更轻量共享内核、启动更快秒级、资源占用少虚拟机完整OS、隔离性更强但资源开销大。镜像删除 vs 容器删除docker rmi删除镜像docker rm删除容器。删除正在运行的容器需加-f。docker run vs docker create docker startruncreatestart。docker stop vs docker downstop只停止容器不删除downCompose命令停止并删除容器。CMD vs ENTRYPOINTCMD可被docker run后的命令覆盖ENTRYPOINT不易被覆盖优先级更高。5. 具体建议与注意事项建议在国内网络环境使用镜像站加速修改/etc/docker/daemon.json添加registry-mirrors。生产环境使用--restart unless-stopped手动停止的容器不会自动重启。多容器应用使用 Docker Compose 管理避免多次docker run。容器内调试时若缺少命令如 vi先查看Linux发行版cat /etc/os-release再用对应包管理器安装Debian系用apt。使用docker inspect AI 快速解析容器配置。拉取镜像时注意 CPU 架构如 arm64 设备需确认镜像是否支持。注意事项绑定挂载时宿主机空目录会覆盖容器内原有内容导致服务异常如 Nginx 显示403。删除容器会丢失容器内所有未持久化的数据重要数据必须使用挂载卷。使用 host 模式虽方便但容器与宿主机网络完全共享端口冲突风险高。镜像构建时为减小体积基础镜像通常为极简系统如 slim、alpine缺少常见工具需自行安装。强制删除容器docker rm -f可能造成数据丢失谨慎使用。6. 补充说明实战案例Nginx 部署 自定义网页挂载、MongoDB mongo-express 组合、Python FastAPI 应用镜像构建与推送。资源推荐作者提供的 Docker 安装及镜像站配置脚本仓库github.com/tech-shrimp/docker_installer。AI辅助学习可将docker inspect输出直接粘贴给 AI快速解读容器配置。第二部分常见知识点与需了解的概念基础概念类Docker 架构C/S 模式Docker Client → Docker Daemon → containerd → runc了解有利于排查问题。UnionFS联合文件系统镜像分层存储的基础每层只读容器层可写写时复制节省空间。.dockerignore文件构建镜像时排除不需要的文件如node_modules、.git类似.gitignore。多阶段构建在一个 Dockerfile 中使用多个FROM最终只复制必要产物极大减小镜像体积。风险类容器逃逸风险Docker 默认非 root 用户运行但若用户以 root 运行容器且挂载了宿主机敏感目录可能被恶意程序逃逸。镜像漏洞基础镜像可能包含已知 CVE 漏洞应定期扫描docker scan或使用 Trivy。日志无限增长容器默认不限制日志大小长期运行可能占满磁盘需配置log-opts max-size。docker system prune -a风险会删除所有未使用的镜像、容器、网络、构建缓存可能导致需要重新拉取。实操类查看容器资源占用docker stats实时查看 CPU/内存使用。复制文件进出容器docker cp 宿主机路径 容器id:容器路径双向。修改已运行容器的端口映射不能直接改需docker commit为新镜像再运行或修改配置文件重启 Docker复杂。docker logs的进阶用法--since查看最近时间日志--tail查看最后 N 行。清理空间docker system prune清理停止的容器、未使用的网络、悬空镜像docker volume prune清理无用卷。对比类Docker Compose vs KubernetesCompose 适用于单机多容器编排K8s 是生产级集群管理支持自动伸缩、服务发现、负载均衡等。COPYvsADD指令ADD支持自动解压 tar 和 URL 下载但行为不透明推荐优先用COPY。ENTRYPOINTvsCMDENTRYPOINT定义容器主进程CMD提供默认参数两者可组合使用。常见误区误以为容器是轻量级虚拟机容器本质是进程通过 namespace 隔离不是完整 OS不能随意执行systemctl等命令。误认为docker stop会立即杀死容器默认给 10 秒优雅停止时间可-t修改超时才强制 kill。误以为latest标签总是最新版本latest是约定不一定指向最新稳定版依赖镜像维护者的更新习惯。误认为 Docker 只能运行在 Linux 上Windows/Mac 通过虚拟机WSL2/Hyper-V运行 Linux 容器也可运行 Windows 容器需特定 OS。误认为容器内修改文件后提交docker commit是最佳实践应使用 Dockerfile 和挂载卷commit不可复现且易产生镜像膨胀。进阶知识点Docker 资源限制--memory512m、--cpus1.5防止容器耗尽宿主机资源。健康检查HEALTHCHECKDockerfile 中配置定期检测容器服务是否正常。Docker 事件监听docker events可监控容器生命周期事件用于自动化运维。Rootless 模式以非 root 用户运行 Docker 守护进程提高安全性。Docker 插件如存储插件、网络插件可扩展 Docker 功能。第三部分全面内容总结合并第一、二部分1. 主题概述Docker 通过容器化技术为应用提供独立的运行环境相比虚拟机更轻量共享宿主机内核。核心概念包括镜像只读模板类比模具、容器镜像的运行实例类比糕点、仓库存储分享镜像如 Docker Hub。使用docker run创建容器通过挂载卷-v实现数据持久化端口映射-p对外暴露服务环境变量-e传递配置。Docker Compose 用 YAML 文件管理多容器应用自动创建网络并控制启动顺序。2. 分类与对比对比项Docker 容器传统虚拟机系统内核共享宿主机内核每个 VM 独立内核启动时间秒级分钟级资源占用MB 级GB 级隔离级别进程级系统级网络模式通信方式外部访问容器间互访bridge内部 IP172.17.x.x需-p映射通过 IP自定义 bridge内部子网需-p映射通过容器名DNShost宿主机 IP无需映射共享宿主机none无不可访问不可3. 风险与注意事项注意绑定挂载空目录覆盖容器内容、删除容器丢失数据、host 模式端口冲突、基础镜像缺少工具。补充风险容器逃逸以 root 运行且挂载敏感宿主机目录时存在安全风险。镜像漏洞基础镜像可能有已知 CVE需定期扫描。日志膨胀未限制日志大小可能占满磁盘配置log-opts max-size10m。资源耗尽容器无资源限制可能抢占宿主机所有 CPU/内存应设置--memory、--cpus。4. 实操建议日常操作下载镜像前先搜索 Docker Hub 确认架构和文档。生产环境使用--restart unless-stopped。重要数据使用命名卷或绑定宿主机目录避免容器删除后丢失。使用docker stats监控资源docker logs -f跟踪日志。容器调试进入容器docker exec -it 容器名 /bin/bash或/bin/sh。若缺少命令先查看 Linux 发行版cat /etc/os-release再用对应包管理器安装Debian 用aptAlpine 用apk。镜像构建编写.dockerignore排除无关文件。使用多阶段构建减小体积。构建时利用构建缓存将不易变化的指令如安装依赖写在前面。Compose 使用标准文件名docker-compose.yml非标准用-f指定。使用depends_on控制启动顺序不保证等待服务就绪需应用自身重试。网络调试自定义 bridge 网络中可用ping 容器名测试 DNS 解析。host 模式下容器内ip addr show会显示宿主机 IP。5. 常见误区辨析误区1容器是轻量级虚拟机。→ 容器是进程namespace隔离不能运行systemd。误区2docker stop立刻杀死容器。→ 默认优雅停止等待 10 秒。误区3latest标签永远最新。→ 取决于维护者更新习惯生产环境应指定具体版本号。误区4docker commit是保存容器修改的好方法。→ 不可复现应使用 Dockerfile 和挂载卷。误区5删除镜像前必须先删除依赖的容器。→ 需先停止并删除使用该镜像的容器否则无法删除镜像。误区6Docker 只能运行 Linux 容器。→ Windows/Mac 通过虚拟化运行 Linux 容器Windows 也可运行 Windows 容器。通过本篇内容你将掌握理解 Docker 核心概念镜像、容器、仓库、宿主机及与虚拟机的区别在 Linux/Windows/Mac 上安装 Docker配置镜像站解决网络问题使用docker run的核心参数-d、-p、-v、-e、--name、--restart创建和管理容器实现数据持久化区分绑定挂载与命名卷掌握docker volume命令构建自定义镜像编写 Dockerfile、使用docker build、推送镜像到 Docker Hub配置 Docker 网络bridge、自定义子网、host、none及容器间通信使用 Docker Compose 编排多容器应用编写docker-compose.yml并管理启停