Docker与K8S实战入门:从零搭建容器化集群与Linux运维核心技能 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度如果你正在寻找一套能让你从零开始快速掌握 Docker、K8S 和 Linux 云计算运维核心技能的学习路径那么这篇文章就是为你准备的。这不是一个简单的概念介绍而是一套面向实战、强调动手操作的“速通”教程。它的核心价值在于将 Docker 容器化、K8S 集群编排和 Linux 系统运维这三个紧密关联的技术栈整合成一条清晰的学习主线并提供配套的课件资源帮助你绕过零散的资料直接构建可落地的技能体系。对于初学者和希望系统提升的运维工程师来说最大的痛点往往是Docker 命令学了但不知道如何用到生产环境K8S 概念复杂搭建集群后就不知道下一步该做什么Linux 基础命令会一些但面对真实的服务器运维场景依然无从下手。本教程的目标就是解决这些问题通过“理论→实验→实战”的递进方式让你不仅能理解原理更能亲手搭建环境、部署应用、排查问题。本文将带你梳理这套教程的核心内容框架并提供一个可操作的本地实验环境搭建指南。我们会重点关注以下几个实操环节如何快速准备一个干净的 Linux 实验环境虚拟机或云服务器如何一步步安装 Docker 并运行你的第一个容器如何从零搭建一个可用的 K8S 集群即使是单节点或双节点以及如何将你的应用通过 K8S 进行部署和管理。最后我们还会探讨如何将这些技能应用到真实的云计算运维场景中。1. 核心能力速览教程覆盖范围与学习目标在深入细节之前我们先通过一个表格快速了解这套教程能带你走到哪一步以及你需要准备什么。能力项说明与目标技术栈覆盖Docker容器化基础、K8S/Kubernetes容器编排、Linux系统运维核心。三者形成从“应用打包”到“集群调度”再到“底层支撑”的完整闭环。学习起点面向零基础或有一定 Linux 命令基础的学员。无需预先精通 Go 语言或复杂网络知识。实验环境门槛最低要求一台具备虚拟化功能的电脑Intel VT-x/AMD-V8GB 以上内存20GB 可用磁盘空间。推荐使用虚拟机VMware/VirtualBox或直接使用云服务器如阿里云/腾讯云 ECS。核心产出1. 掌握 Docker 镜像构建、容器管理、数据卷与网络配置。2. 能够独立搭建一个可工作的 K8S 集群使用 kubeadm。3. 能够编写 YAML 文件在 K8S 中部署 Deployment、Service、ConfigMap 等资源。4. 掌握 Linux 下必要的系统监控、日志排查、网络调试和权限管理命令。实战场景从单机容器化应用到多节点微服务集群部署涵盖应用发布、滚动更新、故障恢复、配置管理等基础运维场景。资源形式视频教程 配套课件PPT/PDF/代码脚本。课件通常包含实验步骤、命令合集和 YAML 文件示例是课后复习和实操的关键。2. 适用场景与学习边界谁适合学习这套教程运维新人希望快速进入云计算和容器化领域构建扎实的入门技能栈。开发工程师需要理解应用是如何被容器化并在集群中运行的以便更好地与运维协作或自行维护测试环境。传统运维工程师正在向云原生和 DevOps 方向转型需要系统学习 Docker 和 K8S。学生或自学者寻找一条结构清晰、有实操、有产出的学习路径。这套教程能解决什么问题技能碎片化将 Docker、K8S、Linux 运维三个领域的知识有机串联避免孤立学习。环境搭建恐惧提供详细的、可复现的本地或云环境搭建步骤降低入门实操门槛。缺乏实战指引通过具体的部署案例如部署一个 Web 应用展示从镜像到服务的完整流程。面试与工作衔接覆盖了常见的面试考点和初级运维日常工作场景。需要注意的边界并非深度源码剖析教程重点在于应用和实践不会深入讲解 Docker 或 K8S 的底层源码实现。集群规模有限实验环境通常为 1个 Master 1-2个 Node 的小型集群旨在理解核心概念和操作与生产环境的大规模集群在运维复杂度上有区别。特定云厂商集成教程可能基于通用的开源工具如 kubeadm不会深入涉及 AWS EKS、阿里云 ACK 等云托管服务的特定集成功能但原理相通。安全与高进阶会涉及基本的安全配置如 RBAC但关于网络策略NetworkPolicy、服务网格Istio、高级调度策略等更深入的主题可能需要后续专项学习。3. 环境准备构建你的实验沙盒动手之前一个隔离、干净的实验环境至关重要。以下是两种主流方案方案一本地虚拟机推荐用于学习使用 VMware Workstation Player、VirtualBox 或 Parallels 创建 2-3 台 Linux 虚拟机。系统选择推荐 Ubuntu 20.04/22.04 LTS 或 CentOS 7/Stream 8。它们社区支持好教程资源多。资源配置每台CPU2 核或以上。内存2GBMaster节点建议4GB。磁盘20GB。网络选择“桥接模式”或“NAT模式”确保虚拟机之间及虚拟机与宿主机能互通。初始化操作在所有虚拟机上执行更新系统sudo apt update sudo apt upgrade -y(Ubuntu) 或sudo yum update -y(CentOS)。修改主机名sudo hostnamectl set-hostname master(主节点) 和sudo hostnamectl set-hostname node1(工作节点)。配置 hosts 解析编辑/etc/hosts添加所有节点的 IP 和主机名映射。方案二云服务器体验更接近生产环境在阿里云、腾讯云、华为云等平台购买 2-3 台按量计费的 ECS最基础配置即可学习完可释放成本很低。优势网络稳定免去本地虚拟化性能开销公网IP方便访问。注意确保安全组规则开放必要的端口如 K8S 的 6443NodePort 服务的 30000-32767。通用前置条件检查无论采用哪种方案都需要确保关闭 SwapK8S 默认要求关闭交换分区。sudo swapoff -a # 永久关闭编辑 /etc/fstab注释掉 swap 行。配置防火墙/安全组开放所需端口或直接关闭防火墙仅限实验环境。# Ubuntu 使用 ufw sudo ufw disable # CentOS 使用 firewalld sudo systemctl stop firewalld sudo systemctl disable firewalld配置容器运行时所需的内核参数cat EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter cat EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 EOF sudo sysctl --system4. 实战第一步Docker 安装与容器初体验Docker 是这一切的基础。我们以 Ubuntu 22.04 为例演示安装和基础操作。4.1 安装 Docker Engine# 1. 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 2. 安装依赖包 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release # 3. 添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 4. 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 5. 安装 Docker Engine sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 6. 启动并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 7. 验证安装 sudo docker run hello-world如果看到Hello from Docker!的输出说明 Docker 安装成功。4.2 Docker 核心操作速览现在你可以像在视频教程里一样快速体验几个核心命令# 拉取一个 Nginx 镜像 sudo docker pull nginx:latest # 以后台方式运行一个 Nginx 容器并将宿主机的 8080 端口映射到容器的 80 端口 sudo docker run -d --name my-nginx -p 8080:80 nginx # 查看运行中的容器 sudo docker ps # 查看容器日志 sudo docker logs my-nginx # 进入容器内部 sudo docker exec -it my-nginx /bin/bash # 停止并删除容器 sudo docker stop my-nginx sudo docker rm my-nginx # 构建自定义镜像需要一个 Dockerfile # sudo docker build -t my-app:1.0 .打开浏览器访问http://你的机器IP:8080应该能看到 Nginx 的欢迎页面。至此你完成了从镜像拉取到容器运行、访问、管理的完整闭环。5. 实战第二步搭建你的第一个 K8S 集群我们将使用kubeadm这个官方工具来搭建集群。它简化了部署过程非常适合学习和测试。5.1 在所有节点安装 kubeadm, kubelet, kubectl# 添加 Kubernetes 阿里云镜像源 (国内加速) sudo apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - echo deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update # 安装指定版本例如 1.28.x保持各节点一致 sudo apt-get install -y kubelet1.28.0-00 kubeadm1.28.0-00 kubectl1.28.0-00 sudo apt-mark hold kubelet kubeadm kubectl # 阻止自动更新 # 启动 kubelet sudo systemctl enable --now kubelet5.2 在主节点Master初始化集群# 初始化集群指定 Pod 网络 CIDR例如 Calico 常用的 192.168.0.0/16 # 将 master-node-ip 替换为你的主节点内网IP sudo kubeadm init --apiserver-advertise-addressmaster-node-ip --pod-network-cidr192.168.0.0/16 --image-repository registry.aliyuncs.com/google_containers # 初始化成功后会输出类似下面的提示请保存好最后的 kubeadm join 命令 # Your Kubernetes control-plane has initialized successfully! # ... # Then you can join any number of worker nodes by running the following on each as root: # kubeadm join 192.168.1.100:6443 --token xxxxxx.xxxxxxxxxxxxxx \ # --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 配置 kubectl 权限普通用户 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config5.3 安装 Pod 网络插件CNI没有网络插件Pod 之间无法通信。这里安装 Calico。# 在主节点执行 kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 等待所有 Pod 变为 Running 状态 kubectl get pods -n kube-system -w5.4 将工作节点Node加入集群在每个工作节点上运行之前kubeadm init输出中提供的kubeadm join命令需要 root 权限。sudo kubeadm join 192.168.1.100:6443 --token xxxxxx.xxxxxxxxxxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx回到主节点检查节点状态kubectl get nodes如果看到所有节点状态都是Ready恭喜你一个基础的 K8S 集群已经搭建完成6. 实战第三步在 K8S 中部署你的第一个应用集群搭好了现在让我们部署一个简单的 Nginx 应用体验 K8S 的核心资源对象。6.1 通过 Deployment 部署应用创建一个文件nginx-deployment.yamlapiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 # 运行2个副本Pod selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80应用这个配置kubectl apply -f nginx-deployment.yaml查看部署状态和 Podkubectl get deployments kubectl get pods -l appnginx6.2 通过 Service 暴露应用Pod 的 IP 是临时的我们需要一个稳定的访问入口。创建nginx-service.yamlapiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx # 选择标签为 app: nginx 的 Pod ports: - protocol: TCP port: 80 # Service 对内的端口 targetPort: 80 # Pod 容器的端口 type: NodePort # 类型为 NodePort会在每个节点上开放一个端口30000-32767应用 Service 配置kubectl apply -f nginx-service.yaml kubectl get svc nginx-service输出中会显示NodePort映射的端口例如80:32678/TCP。此时你可以通过http://任意节点IP:32678访问到 Nginx 服务。6.3 体验滚动更新修改nginx-deployment.yaml将镜像版本改为nginx:1.23然后再次应用kubectl apply -f nginx-deployment.yaml使用kubectl get pods -l appnginx -w观察K8S 会逐步创建新 Pod 并终止旧 Pod实现不中断服务的更新。7. Linux 运维核心技能在其中的体现在整个 Docker 和 K8S 的学习与实操过程中Linux 运维技能是无声的基石。以下是几个关键结合点系统监控与排查当 Pod 状态异常时你需要使用kubectl describe pod pod-name查看事件并可能需要登录到对应节点使用docker ps(或crictl ps)、journalctl -u kubelet、dmesg等命令排查容器运行时或系统级问题。网络调试理解 Linux 网络命名空间、虚拟网桥如cni0、iptables规则K8S Service 依赖它是诊断集群网络问题的关键。命令如ip addr、ip route、iptables -L -t nat会经常用到。存储管理K8S 的 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 背后对应着节点的磁盘或网络存储。你需要熟悉lsblk、df -h、mount等命令来管理节点存储。日志集中管理虽然 K8S 有kubectl logs但在生产环境你需要将容器日志收集到 Elasticsearch 等中心化系统。这涉及到节点上的日志文件通常位于/var/log/containers/和日志代理如 Filebeat的部署这些都是 Linux 运维的范畴。权限与安全配置 K8S 节点的 SSH 密钥登录、管理sudo权限、配置防火墙规则、定期更新系统补丁都是基础的 Linux 系统安全工作。8. 常见问题与排查指南在学习和实验过程中你几乎一定会遇到下面这些问题。别担心这是学习的一部分。问题现象可能原因排查命令与思路kubeadm init失败镜像拉取超时网络问题无法访问k8s.gcr.io。使用--image-repository参数指定国内镜像源如registry.aliyuncs.com/google_containers。检查节点网络连通性。节点状态为NotReady1. 网络插件未安装或异常。2.kubelet服务未运行。3. 节点资源CPU/内存不足。1.kubectl get pods -n kube-system查看网络插件 Pod 状态。2.systemctl status kubelet检查服务。3.kubectl describe node node-name查看节点事件和资源情况。Pod 一直处于Pending状态1. 没有满足资源需求的节点。2. 使用了不存在的 PersistentVolumeClaim。3. 节点有污点Taint。kubectl describe pod pod-name查看Events部分通常会给出明确原因。Pod 处于CrashLoopBackOff状态容器内的应用启动失败。1.kubectl logs pod-name查看应用日志。2.kubectl describe pod pod-name查看详情。3. 检查镜像是否正确、启动命令是否有效、环境变量是否配置。无法通过NodePort访问服务1. 节点防火墙未开放端口。2. 安全组云服务器规则未配置。3. Pod 本身没有就绪。1. 在节点本地curl 127.0.0.1:nodeport测试服务是否正常。2. 检查防火墙/安全组规则。3.kubectl get endpoints service-name检查服务是否有对应的就绪 Pod。kubectl命令报错The connection to the server ... was refused1.kube-apiserver未启动。2.~/.kube/config配置错误或丢失。1. 在主节点检查systemctl status kube-apiserver。2. 确认已正确复制admin.conf到~/.kube/config。9. 从实验到生产学习路径建议与资源利用完成上述基础实验后你已掌握了核心流程。要真正用于工作还需要深化深入理解核心概念精读官方文档中关于 Pod、Deployment、Service、ConfigMap、Secret、Volume、Namespace、RBAC 的章节。练习 YAML 编写尝试为你熟悉的应用如一个简单的 Python Flask 或 Node.js 应用编写完整的部署清单包括 Deployment、Service、ConfigMap。学习 Helm这是 K8S 的包管理工具能极大简化复杂应用的部署。尝试用 Helm 部署一个中间件如 Redis 或 MySQL。了解 CI/CD学习如何将 Jenkins、GitLab CI 或 GitHub Actions 与 K8S 结合实现自动化构建和部署。关注可观测性部署 Prometheus Grafana 监控集群和应用指标使用 EFK/ELK 栈管理日志。安全加固学习 Pod 安全策略PSP或 Pod 安全标准PSS配置网络策略NetworkPolicy。关于教程附带的课件请务必善用命令速查表将常用 Docker 和 kubectl 命令打印或放在手边。YAML 示例理解每一行的含义并尝试修改参数观察效果。架构图帮助你在脑海中构建起物理节点、Pod、Service、Ingress 之间的网络流量视图。故障排查流程图按照从 Pod → Service → Deployment → Node → 集群组件的顺序排查问题。这套“DockerK8SLinux”的组合拳是现代云计算运维的入场券。它不再是一堆孤立的知识点而是一个解决“如何高效、可靠地交付和管理应用”的整体方案。学习的重点不是记住每一个命令而是理解其设计思想和工作原理并在不断的实操中形成肌肉记忆。当你能够独立搭建集群、部署应用、并解决过程中遇到的大部分问题时你就已经成功入门并具备了向更高级主题迈进的能力。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度