🐳 Docker / Kubernetes
Docker · Kubernetes (K8s)
大白话:Docker把应用和它需要的所有环境打包成一个“集装箱”,这个集装箱放在任何服务器上都能跑,不会出现“我电脑上明明没问题”的尴尬。Kubernetes是用来管理几十上百个“集装箱”的工具——哪个容器挂了自动重启,访问量大了自动加容器,像一个智能的港口调度系统。
💻平台:Windows、macOS、Linux
💰价格:开源免费
📂所属:信息与计算
🎯方向:软件工程 · 云计算
🔗 访问 Docker 官网 →
🛠️ 专业软件导航 📍 你在这里
覆盖12大学科,数百个行业标配软件
基础科学 · 信息与计算 · 工程与制造 · 艺术与设计 · 生命与健康 · 社科与经管 · 农业与生态 · 生活与技艺 · 娱乐与媒介 · 人文基础 · 体育与健康
📦 核心库·框架·插件生态
覆盖15个技术生态,主流库、框架与插件一网打尽
Python生态 · JavaScript/TS · Java生态 · C/C++生态 · Go生态 · Rust生态 · DevOps云原生 · 移动端开发 · 游戏开发 · 设计师插件 · 编辑器插件 · 浏览器插件 · 生产力工具 · 学术科研
📚 学习资源与开发辅助
五大类软资源,从理论到实战的完整学习生态
权威课程平台 · 官方文档 · 技术问答社区 · 实战练习 · 开放数据集
📋 常用功能 · 按使用顺序排列

Docker的核心流程:找镜像 → 拉取 → 运行容器 → 管理数据 → 自己打包镜像。Kubernetes在此基础上管理多容器集群。

1
📥
安装Docker
docker.com下载Docker Desktop,安装后终端输入docker version验证
🎯 Docker就绪
2
🔍
搜索镜像
docker search nginx 搜索,或去hub.docker.com上浏览官方镜像
🎯 找到需要的镜像
3
⬇️
拉取镜像
docker pull nginx 从云端下载镜像到本地,像下载一个软件安装包
🎯 镜像本地可用
4
🚀
运行容器
docker run -d -p 8080:80 nginx 后台运行nginx,把容器的80端口映射到本机8080
🎯 浏览器打开localhost:8080看到nginx欢迎页
5
📋
查看与管理
docker ps看运行中的容器,docker stop停止,docker rm删除
🎯 容器状态可控
6
📝
写Dockerfile
创建Dockerfile,写FROM/COPY/RUN/CMD指令,定义自己的镜像
🎯 自定义镜像配方就绪
7
🏗️
构建镜像
docker build -t myapp . 根据Dockerfile构建属于自己的镜像
🎯 自己的镜像创建成功
8
☁️
推送镜像
docker push 用户名/myapp 推到Docker Hub,服务器直接pull部署
🎯 镜像发布到云端
9
📦
Compose多容器
写docker-compose.yml,定义多个容器(如web+数据库),一键启动整套环境
🎯 多容器应用一键部署
10
☸️
K8s集群管理
kubectl apply部署应用,K8s自动调度、负载均衡、故障恢复
🎯 生产级容器编排就绪

💡 先学Docker(前8步),把单个容器的创建、运行、打包流程练熟。Docker Compose和Kubernetes是多容器管理的进阶内容,不建议零基础直接学。

💡 善智点评 · Docker / Kubernetes到底怎么样?

Docker好在哪:彻底解决了“开发环境和生产环境不一致”的世纪难题——你的代码和所有依赖(Python版本、系统库、配置文件)打包在一起,在哪运行都一样。启动速度快(秒级),比虚拟机轻量得多。Docker Hub上有海量现成的镜像,装MySQL、Redis、Nginx只需一行命令。Docker Compose可以一键启动整套开发环境(如web+数据库+缓存),新成员入职第一天就能跑起来。

Kubernetes好在哪:当你需要管理几十上百个容器时,手动操作就是灾难。Kubernetes像一个智能调度系统——哪个容器挂了自动重启,哪个服务访问量大自动加容器,新版本上线时无缝切换。它是Google基于十多年大规模容器管理经验开源的,是目前云原生生态的绝对核心。

坑在哪:Docker本身不难,但Dockerfile编写、网络配置、数据持久化这些概念对新手不友好。Kubernetes的学习曲线极陡——光是基本概念(Pod、Service、Deployment、Ingress、ConfigMap、Secret…)就有十几个,每个都有复杂的YAML配置。资源管理也容易出问题——容器默认可以吃光你的内存和CPU。不要为了用K8s而用K8s——如果你的应用只有两三个服务,Docker Compose就够了。

适合谁:所有后端开发者和运维工程师。如果你想做微服务架构、需要部署和管理多个服务、想实现自动扩容和灰度发布——这些场景下Docker和Kubernetes是必备技能。对于个人开发者,至少要学会Docker,把自己的项目容器化。

免费替代:Docker和Kubernetes本身就是免费开源的。如果觉得Kubernetes太重,可以试试Docker Swarm(Docker自带的轻量级编排工具)。Podman是Docker的免费替代品,架构更安全。Rancher和Portainer提供了Kubernetes的图形化管理界面。

普通人建议:先学Docker,不要碰Kubernetes。学会docker run、docker build、docker compose这三个核心能力,就解决了90%的容器化需求。只有当你管理的容器超过十个、需要自动扩缩容和高可用时,再学Kubernetes。K8s不是必学技能,但Docker是。

🧠 专业解析 · 如果你想深入理解容器与编排
📖 核心定义

Docker是应用容器化引擎,它将应用及其依赖打包到轻量级、可移植的容器中,可以在任何支持Docker的机器上运行。Kubernetes(简称K8s)是容器编排平台,自动化容器的部署、扩缩、负载均衡和故障恢复。两者的关系是:Docker创建和运行容器,Kubernetes管理和编排这些容器。

🧠 核心逻辑:镜像分层与声明式管理

Docker的核心是“镜像分层构建”——每个Dockerfile指令都会创建一个新的只读层,最终的容器只是在这些层上加了一个可写层。这种设计让镜像可以共享基础层(如Ubuntu层),节省磁盘空间和下载时间。Kubernetes的核心是“声明式管理”——你只需要描述“我想要3个Nginx容器、一个负载均衡器”,Kubernetes会自动把当前状态调整到你的期望状态,不需要手动操作每个步骤。

🌳 功能结构树 & 学习资源地图
  • 🌱 层级一:新手起步
    安装Docker Desktop · docker run运行第一个容器(nginx/hello-world) · docker ps/logs/stop基本管理 · docker pull/push镜像操作
    📚 Docker官方入门教程
  • 🌿 层级二:核心能力
    编写Dockerfile · docker build构建镜像 · 端口映射与数据卷(volume) · docker-compose多容器编排 · 环境变量与网络
    📚 Docker Compose入门
  • 🌲 层级三:进阶工具
    Dockerfile最佳实践(多阶段构建/层缓存) · 私有镜像仓库 · Kubernetes基础(Pod/Deployment/Service) · kubectl命令 · minikube本地集群
    📚 Kubernetes官方教程
  • 🌳 层级四:专业应用
    K8s Ingress流量入口 · Helm包管理 · 自动伸缩(HPA) · 滚动更新与回滚 · 持久存储(PV/PVC) · 服务网格(Istio) · GitOps(ArgoCD)
    📚 Helm官方文档
📋 前置依赖

基本的命令行操作能力。了解网络的基本概念(端口、IP地址)。如果学Kubernetes,建议先熟悉Docker的基本操作和YAML文件格式。不需要编程基础就能学Docker;但实际使用中,Docker几乎总是用于部署自己写的代码。

🚀 后续延伸

CI/CD:GitHub Actions + Docker自动构建部署 · 云平台:AWS ECS、Google Cloud Run · 监控:Prometheus + Grafana · 服务网格:Istio · 无服务器:Knative

🪜 分步学习 · 3步从小白到能用

⚠️ 新手最容易踩的3个坑

❌ 坑1:容器退出后数据全丢了——在容器里存的文件重启后就没了。
✅ 避开方法:需要持久化的数据(如数据库文件)必须用Volume挂载到宿主机。在docker run时加 -v 参数,或在docker-compose里配置volumes。记住:容器是无状态的,数据要存外面。
❌ 坑2:镜像越做越大,一个简单的Python应用镜像超过1GB。
✅ 避开方法:用多阶段构建——第一阶段编译和安装依赖,第二阶段只复制运行需要的文件。用alpine或slim版本的镜像(如python:3.9-alpine只有几十MB)。写.dockerignore排除node_modules、.git等不需要的文件。
❌ 坑3:为了用Kubernetes而用Kubernetes,部署一个简单网站也要搭全套K8s集群。
✅ 避开方法:Kubernetes是为大规模集群设计的,本身就有巨大的运维成本。如果你的应用只有两三个服务,用Docker Compose就足够了。只有当你的应用需要自动扩容、滚动更新、跨多台服务器部署时,K8s才是正确的选择。不要用大炮打蚊子。

✅ 学到什么程度算"会了"

  • 能用docker run运行常见服务(nginx/mysql/redis)并正确配置端口映射
  • 能写Dockerfile把自己写的应用打包成镜像并成功运行
  • 能用docker-compose一键启动包含多个服务的开发环境
  • 理解容器是无状态的,知道如何用Volume保存数据
🤖 AI助教 · 遇到不懂的,复制这段话问AI

在实际操作中卡住了?把下面这段话完整复制到任何AI对话框,把【】里的内容换成你的具体问题

我正在自学 Docker / Kubernetes,请你以一位耐心、专业的云原生工程师身份,用大白话帮我拆解以下问题。

我的问题是:【在这里写你的具体问题,比如:怎么用Docker运行一个MySQL数据库并用本机工具连接它?】

要求:
1. 用大白话解释,不要用专业术语
2. 给出一步一步的操作指令,让我能照着做
3. 每一步都告诉我输入什么、点哪里、会看到什么结果
4. 如果这个操作有常见的坑,请提前告诉我怎么避开
5. 最后告诉我,做到什么程度就算成功了

我的水平:新手/刚接触容器
🎓 高阶版:帮我构建知识体系(点击展开)

如果你想系统深入地学习,把下面这段话复制到AI对话框,把【】里的内容换成你的具体情况

我正在深入学习 Docker / Kubernetes,请你以一位精通云原生架构的认知导航专家身份,遵循“为知识建立秩序”的理念,帮我构建一个高阶学习地图。

我的当前水平:【描述你的水平,如:已经能用Docker和Compose部署应用,想系统学习Kubernetes的集群管理和生产级运维】

请按以下框架回答:
1. 🧭 认知导航:先帮我理清【我想学的方向】在整个容器与编排知识体系中的位置
2. 🗺️ 知识地图:用“结构化学习路径”列出3-4个阶段
3. 🪜 学习路线图:按“新手→进阶→专业”的顺序给出练习项目
4. ⚠️ 高阶避坑指南:列出这个方向最容易踩的3个深层坑
5. ✅ 学习效果自查清单:判断自己是否真正理解了这个方向的核心概念

请用大白话回答,但不要回避必要的专业术语。

💡 使用技巧:新手版适合“这个命令怎么用”类问题;高阶版适合“我应该怎么学容器和K8s”类问题。