Build, Ship, and Run
Any App, Anywhere
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
开始学习之旅1. Docker 核心概念
理解 Docker 的关键在于理解"集装箱"的比喻。Docker 将软件及其依赖打包成标准化的单元,称为容器。
镜像 (Image)
只读的模板。例如:一个镜像可以包含一个完整的 Ubuntu 操作系统环境,里面仅安装了 Apache 或用户的其他应用程序。
容器 (Container)
镜像的运行实例。可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
仓库 (Repository)
集中存放镜像文件的场所。最大的公开仓库是 Docker Hub。
Docker 架构图:客户端发送指令给守护进程,守护进程管理镜像与容器,并与远程仓库交互。
容器 vs 虚拟机:容器共享主机内核,更轻量;虚拟机需要独立的 Guest OS,更笨重。
2. 安装与配置
Windows 安装指南
- 下载 Docker Desktop for Windows 安装包。
- 确保 Windows 开启了 Hyper-V 或安装了 WSL 2(推荐)。
- 运行安装程序,按照提示完成安装。
- 重启电脑后,启动 Docker Desktop。
注意:WSL 2 性能更好,建议在设置中开启 "Use the WSL 2 based engine"。
macOS 安装指南
- 下载 Docker Desktop for Mac (.dmg 文件)。
- 注意选择对应芯片版本(Intel 或 Apple Silicon/M1/M2)。
- 拖拽 Docker 图标到 Applications 文件夹。
- 启动 Docker,顶部菜单栏出现鲸鱼图标即成功。
Linux (Ubuntu) 安装指南
# 1. 更新包索引
sudo apt-get update
# 2. 安装依赖
sudo apt-get install ca-certificates curl gnupg
# 3. 添加官方 GPG Key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. 安装 Docker Engine
sudo apt-get install docker-ce docker-ce-cli containerd.io
3. 基础命令实操
掌握以下命令,你就能应对 80% 的日常工作。
镜像操作
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi <image_id>
容器操作
# 启动容器 (后台运行, 映射端口)
docker run -d -p 80:80 --name my-nginx nginx
# 查看运行中的容器
docker ps
# 进入容器内部
docker exec -it my-nginx bash
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
小测验:如何查看所有容器(包括已停止的)?
docker ps
docker ps -a
docker images
4. Dockerfile 最佳实践
Dockerfile 是一个文本文件,包含了一条条构建镜像的指令。
分层存储:镜像层是只读的,容器启动时会在顶部添加一个可写层。
示例 Dockerfile
# 1. 选择基础镜像 (尽量使用 alpine 等小镜像)
FROM python:3.9-alpine
# 2. 设置工作目录
WORKDIR /app
# 3. 复制依赖文件并安装 (利用缓存)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 4. 复制源代码
COPY . .
# 5. 暴露端口
EXPOSE 5000
# 6. 启动命令
CMD ["python", "app.py"]
5. 网络模式
Bridge: 默认模式,通过虚拟网桥通信;Host: 共享主机网络栈,性能高但端口冲突;None: 无网络。
6. Docker Compose
使用 YAML 文件定义多容器应用。一键启动所有服务。
Compose 允许定义服务之间的依赖和网络连接。
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
常用命令:
docker-compose up -d: 后台启动所有服务docker-compose down: 停止并删除容器、网络docker-compose logs -f: 查看日志
7. 生产环境注意事项
安全 (Security)
- 不要以 root 用户运行容器。
- 使用可信的官方镜像。
- 定期扫描镜像漏洞。
优化 (Optimization)
- 使用多阶段构建 (Multi-stage builds) 减小镜像体积。
- 合理利用构建缓存。
- 限制容器资源 (CPU/Memory)。