Docker

一、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 的方案,提升了运行效率与稳定性
相关推荐
梦想的旅途22 小时前
RVA与基址偏移在自动化执行中的稳定性研究
运维·自动化·企业微信·rpa
呼啦啦呼啦啦啦啦啦啦2 小时前
推送docker镜像至私有 Docker 镜像仓库(附企业harbor实战)
运维·docker·容器
m0_485614672 小时前
Docker基础
docker·容器·php
二等饼干~za8986682 小时前
碰一碰发视频系统源码开发搭建--技术分享
java·运维·服务器·重构·django·php·音视频
爱学大树锯3 小时前
【Docker本地化超级实践】Docker 镜像离线构建方案
运维·docker·容器
熙丫 133814823863 小时前
CISAW-RM风险管理认证培训|2026年度课程计划全面发布:筑牢安全防线
运维·安全
默恋~微凉3 小时前
Docker
运维·docker·容器
叽里咕噜怪3 小时前
Docker 场景化作业:生产环境容器操作实训
运维·docker·容器
玥轩_5213 小时前
防火墙技术-综合应用实验
运维·网络·网络协议·网络安全·智能路由器·路由器·防火墙