Build once, run anywhere.
通过本课,你将掌握:
Docker 的基本定义与核心价值
Docker 与传统虚拟机(VM)的本质区别
Docker 的关键组件及其作用
镜像(Image)与容器(Container)的关系
常用 Docker 命令及实际应用场景
Docker 是一个操作系统级虚拟化(容器化)
使用 Go 语言 编写
支持 Windows、macOS 和 Linux(Docker Engine 原生运行于 Linux)
解决经典难题:“在我机器上能跑!”
与 VMware 等硬件级虚拟化不同,Docker 在 OS 层面实现隔离

依赖冲突(如 Python 版本、库版本)
配置不一致(开发 vs 生产环境)
操作系统差异导致部署失败
“能在我电脑跑,但上线就崩”
将 应用程序 + 所有依赖 + 配置 打包进一个标准化单元——容器。

采用 客户端 - 服务器架构:
Docker Daemon (dockerd):后台服务,管理镜像、容器、网络、卷
Docker CLI:用户通过 docker 命令与 Daemon 交互
REST API:CLI 与 Daemon 通信的桥梁(通过 Unix socket 或 TCP)
没有 Docker Engine,就无法构建镜像或运行容器。

使用 DSL(领域特定语言)编写
指令按从上到下顺序执行
示例:
FROM python:3.11
COPY . /app
RUN pip install -r /app/requirements.txt
CMD ["python", "/app/app.py"]构建命令:docker build -t my-app .
nginx镜像 →docker run nginx→ 启动一个运行 Nginx 服务的容器

官方公共镜像仓库
可拉取(pull)公共镜像(如 redis, mysql, ubuntu)
可推送(push)自己的镜像(设为公开或私有)
DevOps 团队常用作镜像分发中心

+------------------+
| Docker CLI | ← 用户输入 docker run/build 等命令
+--------+---------+
|
| (REST API via Unix socket / TCP)
v
+--------+---------+
| Docker Daemon | ← 管理镜像、容器、网络、存储卷
| (dockerd) |
+--------+---------+
|
v
+--------+---------+
| Host OS Kernel | ← 所有容器共享此 Linux 内核
+------------------+
注意:Docker Engine 原生仅支持 Linux。Windows/macOS 上通过 WSL2 或轻量 VM 模拟 Linux 环境。
绝大多数学习和开发场景使用 Docker CE 即可。
Docker 通过容器化实现环境一致性,彻底解决“在我机器上能跑”问题。
容器轻量、快速、可移植,共享宿主机内核,不运行完整操作系统。
镜像是静态蓝图,容器是动态实例。
核心组件包括:Engine、Image、Container、Dockerfile、Hub、Registry。
掌握基础命令是使用 Docker 的第一步,动手实践才是掌握关键。
为什么 Docker 容器比虚拟机更节省资源?它依赖哪些 Linux 内核机制(如 cgroups、namespaces)?
如果两个容器都基于相同的 Ubuntu 镜像,它们是否会各自占用完整的 Ubuntu 系统磁盘空间?为什么?
在没有互联网的环境中,如何将本地构建的 Docker 镜像迁移到另一台服务器?