15.1.1 Docker发展背景与核心目标
Docker发展背景与核心目标#
随着互联网业务规模与交付节奏加快,传统“按服务器配置环境”的方式暴露出部署周期长、环境不一致、资源利用率低与迁移成本高等问题。虚拟化虽提升了资源隔离与管理能力,但仍存在镜像体积大、启动慢、密度不高等不足。在“敏捷交付、持续集成与弹性伸缩”的需求驱动下,容器化技术逐步成熟,Docker以标准化镜像与容器运行时为核心,成为开发与运维之间的协作桥梁。
核心目标
- 环境一致性:镜像封装依赖,确保开发/测试/生产一致。
- 交付标准化:镜像作为交付物,版本化、可回滚。
- 资源高效:共享内核,提高部署密度。
- 快速启动:秒级启动,便于弹性伸缩。
- 应用解耦:服务化封装,支撑微服务演进。
- 可移植与自动化:跨环境迁移与流程自动化。
原理草图(容器化目标与流程)
示例:最小化体验 Docker 目标价值(安装+运行+验证)#
1)安装 Docker(以 Ubuntu 20.04+ 为例)
# 更新索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加官方 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
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
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
2)启动并验证
# 启动服务
sudo systemctl enable --now docker
# 查看版本
docker version
# 运行测试容器
docker run --rm hello-world
预期效果:控制台出现 Hello from Docker! 提示,表示镜像拉取与容器启动成功。
3)关键命令解释
- docker run --rm hello-world
- run:创建并运行容器
- --rm:容器退出后自动删除
- hello-world:镜像名(用于验证环境)
排错与常见问题#
问题1:Cannot connect to the Docker daemon
原因:服务未启动或权限不足
sudo systemctl status docker
sudo systemctl start docker
# 允许当前用户使用 docker(重新登录生效)
sudo usermod -aG docker $USER
问题2:拉取镜像速度慢或失败
# 临时使用镜像加速(示例)
sudo mkdir -p /etc/docker
cat <<'EOF' | sudo tee /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl restart docker
练习#
-
验证环境一致性:
在两台机器上执行docker run --rm hello-world,记录输出一致性。 -
体会快速启动:
bash time docker run --rm alpine:3.18 echo "ok"
对比传统虚拟机启动时间差异。 -
交付标准化:
拉取并运行一个固定版本镜像:
bash docker pull nginx:1.24 docker run -d --name web -p 8080:80 nginx:1.24 curl http://localhost:8080
体会“版本可控、可回滚”的交付方式。