本文是云原生核心技术系列的第二篇,旨在为初学者铺平通往容器世界的大道。我们将深入浅出地剖析 Docker 的三大核心概念:镜像 (Image)、容器 (Container) 和仓库 (Repository)。通过生动的比喻和架构对比,你将清晰地理解为什么容器技术相比传统虚拟机(VM)更轻量、更高效。最后,我们会手把手指导你在不同操作系统上完成 Docker 的安装,并通过运行经典的 hello-world
来验证你的第一个容器环境,为你后续的实战之旅打下坚实基础。
在上一篇文章中,我们描绘了云原生的宏伟蓝图,理解了它为何是软件开发的未来趋势。而要将这个蓝图变为现实,我们必须掌握其最核心的基石技术——容器化。今天,我们将聚焦于容器技术的代名词:Docker。
你可能听过 Docker,但它究竟是什么?它和我们熟悉的虚拟机有什么本质区别?为什么大家都说它“更香”?
别急,这篇文章将为你一一解答。我们将从 Docker 的核心概念入手,为你揭开它的神秘面纱,并带领你完成环境搭建,迈出云原生实践的第一步!
要理解 Docker,首先要搞懂它的三个基本组成部分。我们可以用一个非常贴切的比喻来理解它们:做披萨。
镜像 (Image) - “披萨的配方和面团”
容器 (Container) - “烤箱里正在烘焙的披萨”
仓库 (Repository) - “披萨连锁店的中央厨房”
三者关系总结: 我们从仓库 (Repository) 下载一个镜像 (Image),然后以这个镜像为模板,运行一个(或多个)容器 (Container)。
很多人会问:“容器听起来和虚拟机好像,都是隔离环境,它们到底有什么区别?”
区别巨大!一张图就能看懂:
虚拟机 (VM):
Docker 容器:
简单总结: 虚拟机是硬件级别的隔离,模拟了一整台电脑;而 Docker 是进程级别的隔离,更加轻量和高效。这就像住酒店,虚拟机是给你分了一栋独立别墅(配套齐全但笨重),而 Docker 是给了你一个精装单间(共享酒店设施但拎包入住)。
Docker 如此神奇,它到底是如何实现隔离的呢?这主要归功于 Linux 内核的两个核心技术:
命名空间 (Namespaces):实现“隔离”
控制组 (Cgroups):实现“限制”
一句话总结: Namespaces 负责让容器感觉自己是独立的,Cgroups 负责限制这个容器能用多少资源。
理论讲完了,让我们动手吧!
对于桌面用户,最简单的方式是安装 Docker Desktop。它是一个集成了 Docker 引擎、Kubernetes 和图形化管理界面的强大工具。
对于 Linux 服务器,我们通常安装 Docker Engine。
# 1. 卸载旧版本(如果有)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2. 设置 Docker 的 APT 仓库
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# 3. 添加 Docker 的官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /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 \
$(. /etc/os-release && echo "$VERSION_CODENAME") 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-buildx-plugin docker-compose-plugin
# 6. (可选但推荐) 将当前用户添加到 docker 组,避免每次都用 sudo
sudo usermod -aG docker $USER
# 注意:执行此命令后,你需要退出当前终端会话并重新登录才能生效!
无论你使用哪种系统,安装完成后,打开你的终端(Windows 用户可以使用 PowerShell 或 CMD),让我们来验证一下。
第一步:检查 Docker 版本
输入以下命令,如果能看到版本信息,说明 Docker 已成功安装并运行。
docker --version
输出可能类似:Docker version 24.0.5, build ...
第二步:运行 hello-world
容器
这是 Docker 官方提供的一个教学镜像,让我们运行它!
docker run hello-world
当你敲下回车后,会看到类似下面的输出:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Digest: sha256:...
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
发生了什么?
这个简单的命令背后,Docker 帮你做了很多事:
hello-world
的镜像,发现没有。恭喜你!你已经成功搭建了 Docker 环境,并亲手运行了你的第一个容器。
今天,我们重点掌握了:
现在,你已经不再是 Docker 的门外汉了。但是,运行别人做好的镜像只是第一步,真正的乐趣在于创造属于我们自己的东西。
下一篇预告:【云原生核心技术 (3/12): Docker 实战入门——亲手构建并运行你的第一个 Web 应用容器】
我们将带你把一个简单的 Web 应用,打包成一个属于你自己的 Docker 镜像,并让它在容器中欢快地运行起来。真正的实战即将开始,敬请期待!