目录
一、Docker 核心知识
- 核心定义:轻量级容器化技术,实现应用 + 环境的打包、分发、运行,解决 “环境不一致” 问题。
- 核心组件:镜像(Image,只读模板)、容器(Container,镜像的运行实例)、Dockerfile(镜像构建脚本)、仓库(Registry,存储镜像)。
- 核心价值:单机层面的应用隔离、快速部署、资源轻量(共享宿主机内核,比虚拟机省资源)。
- 局限:无集群管理能力,无法实现容器的自动扩缩容、故障自愈、服务发现等。
二、K8s(Kubernetes)核心知识
- 核心定义:容器编排平台,对集群中大量 Docker(或其他容器)进行自动化管理,实现生产级容器集群运维。
- 核心能力:自动扩缩容、故障自愈(容器挂了自动重启)、服务发现 / 负载均衡、滚动更新 / 回滚、资源调度、存储卷管理。
- 核心组件:Pod(最小调度单元,包含 1/N 个容器)、Deployment(管理 Pod 的部署)、Service(服务访问入口)、Node(集群节点)、Master(集群控制节点)。
- 与 Docker 的关系:K8s 不替代 Docker,而是管理 Docker 容器,Docker 是 K8s 最常用的容器运行时(也可替换为 containerd、CRI-O 等)。
三、Docker 与 K8s 核心区别
| 维度 | Docker | K8s |
|---|---|---|
| 定位 | 容器化技术(单机) | 容器编排平台(集群) |
| 核心能力 | 打包、运行单个容器 | 集群容器的自动化管理 |
| 适用场景 | 开发 / 测试、单机部署 | 生产环境、大规模集群部署 |
| 依赖关系 | 可独立使用 | 依赖容器运行时(如 Docker) |
四、通俗理解
- Docker:把应用 “装在盒子里”,保证在哪都能打开;
- K8s:管理成千上万个 “盒子”,自动把盒子放到合适的机器、坏了自动换、不够用自动加。
五、Docker & K8s 高频常用命令
(一)Docker 核心命令(开发 / 部署高频)
1. 镜像操作
- 拉取镜像:
docker pull 镜像名:标签(如docker pull nginx:1.25) - 查看本地镜像:
docker images - 删除镜像:
docker rmi 镜像ID/镜像名(强制删:加-f) - 构建镜像:
docker build -t 镜像名:标签 构建目录(关联 Dockerfile)
2. 容器操作
- 运行容器:
docker run -d -p 宿主机端口:容器端口 --name 容器名 镜像名(-d后台运行,-p端口映射) - 查看容器:
docker ps(运行中)/docker ps -a(所有,含停止) - 启停 / 重启容器:
docker start/stop/restart 容器ID/容器名 - 进入容器:
docker exec -it 容器ID/容器名 /bin/bash(交互式终端) - 删除容器:
docker rm 容器ID/容器名(强制删运行中:加-f) - 查看容器日志:
docker logs -f 容器ID/容器名(-f实时刷新)
3. 其他常用
- 查看容器详情:
docker inspect 容器ID/镜像ID - 容器打包为镜像:
docker commit 容器ID 新镜像名:标签 - 停止所有容器:
docker stop $(docker ps -aq)
(二)K8s(kubectl【T白磕头】)核心命令(集群运维高频)
1. 基础操作(资源通用:pod/deployment/service/namespace 等)
- 查看资源:
kubectl get 资源类型(如kubectl get pods,加-n 命名空间指定命名空间,加-o wide看详情) - 查看资源详情:
kubectl describe 资源类型 资源名(如kubectl describe pod nginx-pod,排障常用) - 创建 / 应用资源:
kubectl apply -f 配置文件.yaml(推荐,支持更新) - 删除资源:
kubectl delete 资源类型 资源名/kubectl delete -f 配置文件.yaml - 进入 Pod 容器:
kubectl exec -it Pod名 -- /bin/bash(Pod 多容器加-c 容器名)
2. Pod 专属
- 查看 Pod 日志:
kubectl logs -f Pod名(多容器加-c 容器名,排障核心) - 重启 Pod(无直接命令,可删了重建):
kubectl delete pod Pod名(Deployment 管理的 Pod 会自动重建)
3. Deployment 专属(核心控制器,管理 Pod)
- 扩容 / 缩容:
kubectl scale deployment 部署名 --replicas=副本数(如--replicas=3) - 滚动更新:
kubectl set image deployment 部署名 容器名=新镜像:标签(如nginx=nginx:1.26) - 回滚更新:
kubectl rollout undo deployment 部署名(回滚到上一版本) - 查看更新状态:
kubectl rollout status deployment 部署名
4. Service 专属(服务访问)
- 暴露 Deployment 为 Service:
kubectl expose deployment 部署名 --type=服务类型 --port=端口 --target-port=容器端口(类型:NodePort/ClusterIP/LoadBalancer) - 查看 Service 端口映射:
kubectl get svc -o wide
5. 命名空间 & 集群状态
- 创建命名空间:
kubectl create namespace 命名空间名 - 查看集群节点:
kubectl get nodes - 查看集群所有资源:
kubectl get all -n 命名空间
6. 快捷操作
- 临时设置默认命名空间:
kubectl config set-context --current --namespace=命名空间名 - 查看 kubectl 配置:
kubectl config view
(三)速记技巧
- Docker 核心:拉、建、跑、查、删(镜像 + 容器)
- K8s 核心:
get/describe/apply/delete/exec/logs是高频五大命令,适配 90% 场景 - 所有命令可加
--help看参数(如docker run --help/kubectl get --help)
总结
- Docker 是单机容器化技术,核心解决应用环境一致性问题,K8s 是集群容器编排平台,核心解决大规模容器的自动化管理问题;
- Docker 命令围绕“镜像+容器”的拉、建、跑、查、删展开,K8s 高频命令以
get/describe/apply/delete/exec/logs为核心; - K8s 不替代 Docker,而是基于 Docker 等容器运行时实现集群化管理。
浙公网安备 33010602011771号