Kubernetes之旅 第1部分:为什么使用Docker?

发布: (2025年12月22日 GMT+8 20:57)
5 min read
原文: Dev.to

Source: Dev.to

欢迎阅读关于学习 Kubernetes 的第一篇文章!在深入复杂内容之前,我们必须先聊一聊让这一切成为可能的基石:Docker。

如果你曾从事软件开发,可能已经听过这样一句话:“但它在我的机器上可以运行!”

为什么要使用 Docker?

想象一下,你刚完成一个新功能,代码已经合并到版本控制系统(VCS)中。构建流水线生成了一个制品,并将其部署到服务器。

  • 开发服务器: 完全正常。✅
  • 测试服务器: 如预期工作。✅
  • 生产环境: 部署后,构建失败。❌

发生了什么?

最常见的原因是 环境配置错误 或缺少在开发和测试环境中存在但在生产环境中不存在的依赖。传统上,你只能交付制品,而无法交付完整的环境。这时容器就派上用场了。

Docker 如何解决这个问题

Docker 将代码运行所需的一切——库、依赖、配置,甚至基础操作系统的二进制文件——打包成一个单元。这样,环境相关的故障几乎可以忽略不计。

什么是容器?

容器 是一种隔离的、轻量级的沙箱环境,包含应用代码、库和运行时依赖,且不受宿主操作系统的限制。

  • 关键区别: 与虚拟机(VM)不同,容器 打包完整的操作系统。它只包含最小的二进制文件,并使用宿主的 OS 内核,从而实现快速、可移植且资源高效。

定义: Docker 是让你能够随时随地构建、交付和运行这些容器的平台。

工作原理:Dockerfile → 运行时

要将应用容器化,你需要使用三个主要组件:Dockerfile、镜像和容器。

Dockerfile

Dockerfile 是一个纯文本文件,列出了一系列指令。执行 docker build 时会读取这些指令并创建镜像。

镜像

Docker 镜像是你的应用的快照,包含运行所需的一切。镜像存放在镜像仓库(类似于 VCS)中,所有环境都可以通过 docker pull 拉取相同的镜像。

容器

执行 docker run 会基于镜像创建一个运行实例——即容器。

Docker 架构

Docker 的架构由三个核心组件组成:

  1. 客户端 – 你编写代码的地方(例如笔记本电脑)。
  2. Docker Daemon (dockerd) – 负责监听 API 请求、管理镜像并运行容器的“大脑”。
  3. 镜像仓库 – 用于存放镜像的远程存储。

Docker 命令的生命周期

# Build an image from a Dockerfile (client → daemon)
docker build -t myapp:latest .

# Push the local image to a remote registry
docker push myrepo/myapp:latest

# Pull the image on a target environment
docker pull myrepo/myapp:latest

# Run a container from the pulled image
docker run -d -p 80:80 myrepo/myapp:latest

总结

使用 Docker 后,开发环境与生产环境变得完全一致。如果它在你的机器上可以运行,那么它也会在服务器上运行,因为你已经把“你的机器”(即容器)连同代码一起交付了。

现在我们已经明白为什么需要容器,系列的下一步是学习如何一次管理多个容器。这就是 Kubernetes 登场的地方。

敬请期待第 2 部分!

Back to Blog

相关文章

阅读更多 »