一、docker
核心定位:兼顾理论与实操的 Docker 入门到进阶教程,覆盖容器技术从基础到实战的全场景,适合零基础学习者快速掌握容器核心能力。
1. 核心理论体系
- 容器生态架构:明确容器生态的三层结构(核心技术、平台技术、支持技术),梳理各组件(容器规范、runtime、管理工具等)的定位与关联,帮助学习者建立全局认知。
- 核心概念解析:深入讲解镜像(只读模板)、容器(镜像运行实例)、仓库(镜像存储场所)三大核心概念,通过与虚拟机的对比,突出容器轻量、高效、可移植的优势。
- 底层技术原理:揭秘容器实现的核心技术,包括 cgroup(资源限额)与 namespace(资源隔离),解释容器如何实现 CPU、内存等资源控制及独立运行环境隔离。
2. 实操核心流程
- 环境搭建:详细讲解 CentOS 系统下 Docker 的安装步骤,包括依赖工具安装、镜像源配置(阿里云 / 华为云加速器)、服务启停与验证,解决新手安装痛点。
- 镜像操作全流程:涵盖镜像的拉取、构建(Dockerfile 指令详解,如 FROM、RUN、COPY 等)、标签管理、本地保存与导入、仓库分发(Docker Hub / 华为云 / 私有仓库 Harbor 部署与使用)。
- 容器操作实战:包括容器的创建、启动、进入(attach/exec 两种方式对比)、停止、删除、资源限制(CPU / 内存配额)、生命周期管理,结合实操案例讲解容器状态转换逻辑。
- 网络与存储配置:详解 Docker 三种原生网络(none/host/bridge)的适用场景,自定义网络创建与容器通信配置;深入讲解数据卷(bind mount/docker managed volume)的使用,包括容器与主机、容器间的数据共享,以及数据备份与迁移。
3. 进阶应用与工具
- 监控与日志:介绍 Docker 自带监控命令(ps/top/stats)、cAdvisor 监控工具,以及容器日志查看(docker logs)与集中式日志管理思路。
- Docker Compose 编排:讲解多容器应用的定义与运行,通过 docker-compose.yml 配置文件示例,实现 WordPress+MySQL 等多服务协同部署。
- 图形化管理工具:提供 DockerUI 与 Portainer 的安装与使用步骤,降低可视化管理容器的门槛。
- 实战案例:包含 WordPress、Ghost 内容管理系统、MySQL 数据库等容器化部署案例,覆盖镜像构建、网络配置、数据持久化等核心场景。
Docker 核心命令全解析
Docker 命令围绕镜像、容器、网络、存储等核心组件展开,覆盖从环境搭建到应用部署的全流程,以下是《docker 教案.pdf》中重点讲解的命令分类及用法:
一、基础环境命令
1. 版本与信息查看
docker --version:查看 Docker 客户端版本。docker info:查看 Docker 系统信息,包括镜像数、容器数、存储驱动、网络模式等核心配置。
2. 服务管理(系统级)
systemctl start docker:启动 Docker 服务。systemctl stop docker:停止 Docker 服务。systemctl restart docker:重启 Docker 服务。systemctl enable docker.service --now:设置 Docker 开机自启并立即启动。systemctl status docker:查看 Docker 服务运行状态。
二、镜像操作命令
1. 镜像拉取与搜索
docker search [镜像名]:在 Docker Hub 搜索镜像(如docker search httpd)。docker pull [镜像名:标签]:从仓库拉取镜像,标签可选(默认latest,如docker pull centos:7)。
2. 镜像构建
docker build -t [镜像名:标签] [Dockerfile 所在目录]:通过 Dockerfile 构建镜像(-t指定名称和标签,目录用.表示当前目录)。docker build -f [自定义Dockerfile路径] -t [镜像名] .:指定自定义路径的 Dockerfile 构建镜像。
3. 镜像管理
docker images:列出本地所有镜像,显示仓库名、标签、ID、创建时间和大小。docker images [镜像名]:过滤查看指定镜像(如docker images ubuntu)。docker tag [原镜像名:标签] [新镜像名:新标签]:为镜像打标签(如docker tag httpd:latest myhttpd:v1)。docker rmi [镜像ID/镜像名:标签]:删除本地镜像(多个镜像用空格分隔,强制删除加-f)。docker history [镜像ID/镜像名]:查看镜像的构建历史(每层操作记录)。
4. 镜像导入导出
docker save -o [导出文件名.tar] [镜像名1] [镜像名2]:将本地镜像保存为 tar 包(如docker save httpd hello-world -o images.tar)。docker load -i [tar包路径]:从 tar 包导入镜像(如docker load -i images.tar)。docker export [容器ID/容器名] -o [导出文件名.tar]:将容器当前状态导出为 tar 包(丢失镜像元数据)。docker import [tar包路径] [新镜像名:标签]:将 export 导出的 tar 包导入为新镜像。
5. 镜像仓库操作
docker login [仓库地址]:登录镜像仓库(默认 Docker Hub,私有仓库需指定地址,如华为云 SWR)。docker logout [仓库地址]:退出镜像仓库。docker push [仓库地址/镜像名:标签]:将本地镜像推送到远程仓库(如docker push swr.cn-east-3.myhuaweicloud.com/gaoqiaodong/centos_httpd:v1)。
三、容器操作命令
1. 容器创建与启动
docker run [参数] [镜像名] [容器内命令]
:创建并启动容器(核心命令),常用参数:
-d:后台运行容器(守护态)。-it:交互模式启动,分配伪终端(如docker run -it ubuntu bash)。--name [容器名]:指定容器名称(如docker run --name myweb httpd)。-p [主机端口:容器端口]:端口映射(如docker run -p 80:80 httpd)。--network [网络名]:指定容器所属网络(如docker run --network=my_net2 busybox)。-v [主机路径:容器路径]:挂载数据卷(如docker run -v ~/htdocs:/usr/local/apache2/htdocs httpd)。--restart=always:容器退出后自动重启。docker create [参数] [镜像名]:仅创建容器,不启动(后续用docker start启动)。
2. 容器生命周期管理
docker start [容器ID/容器名]:启动已创建或停止的容器。docker stop [容器ID/容器名]:停止运行中的容器(发送 SIGTERM 信号)。docker kill [容器ID/容器名]:强制停止容器(发送 SIGKILL 信号)。docker restart [容器ID/容器名]:重启容器(先 stop 再 start)。docker pause [容器ID/容器名]:暂停容器运行。docker unpause [容器ID/容器名]:恢复暂停的容器。docker rm [容器ID/容器名]:删除已停止的容器(强制删除运行中的容器加-f)。docker rm -f $(docker ps -aq):批量删除所有容器(-aq列出所有容器 ID)。
3. 容器状态与信息查看
docker ps:列出当前运行中的容器。docker ps -a:列出所有容器(包括运行中、停止、创建状态)。docker inspect [容器ID/容器名]:查看容器详细信息(网络、存储、配置等)。docker logs [容器ID/容器名]:查看容器日志(-f实时跟踪日志,如docker logs -f myweb)。docker top [容器ID/容器名]:查看容器内运行的进程(如docker top sshtest)。docker stats [容器ID/容器名]:实时查看容器资源使用率(CPU、内存、网络 IO 等)。
4. 容器交互与文件操作
docker attach [容器ID/容器名]: attach 到容器启动命令的终端(退出用Ctrl+p+Ctrl+q,避免终止容器)。docker exec [参数] [容器ID/容器名] [命令]:在运行中的容器内执行命令,常用-it进入交互终端(如docker exec -it myweb bash)。docker cp [本地路径] [容器ID/容器名:容器内路径]:本地文件 / 目录复制到容器(如docker cp ~/index.html myweb:/usr/local/apache2/htdocs)。docker cp [容器ID/容器名:容器内路径] [本地路径]:容器内文件 / 目录复制到本地。
四、网络操作命令
1. 网络查看与创建
docker network ls:列出本地所有 Docker 网络(默认包含 bridge、host、none)。docker network create --driver bridge [网络名]:创建自定义桥接网络(如docker network create my_net)。docker network create --subnet [网段] --gateway [网关] [网络名]:创建指定网段和网关的自定义网络(如docker network create --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2)。
2. 网络管理
docker network inspect [网络名/网络ID]:查看网络详细配置(包含关联的容器、网段等)。docker network connect [网络名] [容器ID/容器名]:将容器加入指定网络(如docker network connect my_net2 busybox1)。docker network disconnect [网络名] [容器ID/容器名]:将容器从网络中移除。
五、存储(数据卷)操作命令
1. 数据卷管理
docker volume ls:列出所有 Docker 管理的数据卷(docker managed volume)。docker volume create [卷名]:创建自定义数据卷(如docker volume create portainer_data)。docker volume inspect [卷名]:查看数据卷详细信息(存储路径等)。docker volume rm [卷名]:删除指定数据卷。docker volume prune:删除未使用的数据卷。
2. 数据卷挂载(运行容器时)
docker run -v [卷名:容器内路径] [镜像名]:挂载 Docker 管理的数据卷(如docker run -v myvol:/data centos)。docker run -v [主机路径:容器内路径] [镜像名]:挂载主机目录(bind mount,如docker run -v ~/mysql:/var/lib/mysql mysql)。docker run -v [主机路径:容器内路径:ro] [镜像名]:只读挂载(容器内无法修改挂载内容)。
六、Docker Compose 命令(多容器编排)
docker compose up -d:根据docker-compose.yml启动所有服务(-d后台运行)。docker compose down:停止并删除所有服务、网络(保留数据卷需加--volumes)。docker compose ps:列出 Compose 管理的容器状态。docker compose logs [服务名]:查看指定服务的日志(-f实时跟踪)。docker compose restart [服务名]:重启指定服务(无服务名则重启所有)。docker compose build:构建 Compose 中的服务镜像。
七、其他常用命令
docker system prune:清理未使用的容器、镜像、网络(释放磁盘空间,谨慎使用)。docker system df:查看 Docker 磁盘使用情况。docker network prune:清理未使用的网络。docker tag [原镜像] [仓库地址/镜像名:标签]:为镜像重命名(用于推送到私有仓库)。
二、docker swarm
核心定位:聚焦 Docker 原生集群编排工具 Swarm 的部署与应用,专注解决多主机容器的集群化管理、高可用与弹性伸缩需求。
1. 核心概念与架构
- 集群核心术语:明确 swarm(Docker 主机集群)、node(集群节点,分 manager/worker 角色)、service(集群中运行的应用服务,定义容器运行规则)的概念与职责。
- Swarm Mode 特性:说明 Swarm 与 Docker Engine 深度集成的优势,无需额外安装软件,原生支持服务发现、负载均衡、故障自愈等核心能力。
2. 集群部署与运维
- 集群搭建流程:详细讲解三节点集群(1 个 manager 节点 + 2 个 worker 节点)的搭建步骤,包括 manager 节点初始化、worker 节点加入集群、防火墙配置(信任 zone 设置)。
- 节点管理操作:涵盖节点状态查看(docker node ls)、节点角色配置(设置 manager 节点为 drain 模式,避免运行服务)、节点故障处理等。
3. 服务部署与核心能力
- 服务生命周期管理:包括服务创建(docker service create)、副本伸缩(docker service scale)、服务更新(端口映射添加)、服务删除(docker service rm)等操作。
- 高可用与故障切换:通过模拟 worker 节点宕机场景,验证 Swarm 自动将故障节点上的服务副本调度到其他可用节点的能力,保障服务始终处于期望状态。
- 服务访问机制:讲解 routing mesh 特性,实现外部网络通过集群中任意节点的映射端口访问服务,结合 ingress 网络(overlay 类型)实现跨主机容器通信。
三、容器管理工具 Containerd
核心定位:深入解析容器运行时工具 Containerd 的技术背景、生态角色与核心价值,聚焦其在云原生生态中的底层支撑作用。
1. 技术背景与演进历程
- 起源与独立:Containerd 最初是 Docker Engine 的内置组件,2017 年独立开源后捐赠给 CNCF 基金会,成为中立的容器运行时标准组件。
- 演进动因:为避免 Docker 在容器市场一家独大,适配 Kubernetes 等编排系统的标准化需求,专注于底层容器运行时管理,与 Docker Engine 分工明确(Docker 聚焦开发者体验,Containerd 聚焦底层运行时)。
2. 核心功能与生态定位
- 核心职责:专注容器运行时的核心操作,包括镜像拉取、容器启停、网络配置、存储管理,依赖 runC 执行容器运行,完全兼容 OCI 规范。
- 生态角色:不直接面向终端用户,而是作为上层编排系统(Kubernetes、Swarm 等)的底层依赖,通过 gRPC API 提供容器管理能力。
- 关键优势:轻量稳定、资源占用低,无缝对接 Kubernetes(无需额外垫片 shim 即可适配 CRI 接口),成为云原生生态中容器运行时的主流选择。
3. 与 Docker 的关系
- 功能拆分:Docker Engine 剥离 Containerd 后,聚焦镜像构建、开发者工具链等上层能力;Containerd 专注底层运行时,负责容器生命周期的核心管理。
- Kubernetes 适配:由于 Containerd 原生支持 CRI 接口,成为 Kubernetes 推荐的容器运行时,替代了早期依赖垫片对接 Docker 的方案,提升了运行效率与稳定性