【MapSheep】
[好记性不如烂笔头]

一、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

总结

  1. Docker 是单机容器化技术,核心解决应用环境一致性问题,K8s 是集群容器编排平台,核心解决大规模容器的自动化管理问题;
  2. Docker 命令围绕“镜像+容器”的拉、建、跑、查、删展开,K8s 高频命令以get/describe/apply/delete/exec/logs为核心;
  3. K8s 不替代 Docker,而是基于 Docker 等容器运行时实现集群化管理。
posted on 2026-01-28 17:20  (Play)  阅读(17)  评论(0)    收藏  举报