一、什么是 Docker?
Docker 是一个开源容器化平台,可以将应用及其依赖打包成一个可移植的容器,在任何系统上运行而无需修改。
优势:
- 轻量:共享主机内核,资源占用小
- 快速启动:比虚拟机启动快很多
- 可移植:跨平台运行一致性高
- 易于部署:Dev → Test → Prod 一致性
二、Docker 基本组件
名称 |
说明 |
Image |
镜像:应用的只读模板(如 Ubuntu + Python) |
Container |
容器:镜像的运行实例 |
Dockerfile |
构建镜像的脚本文件 |
Docker Hub |
官方镜像仓库(registry.docker.io) |
Volume |
数据卷,容器与主机之间共享数据 |
Network |
容器之间通信的网络桥梁 |
三、Docker 常用命令
镜像相关
docker pull <镜像名> # 拉取镜像
docker images # 查看本地镜像
docker rmi <镜像ID或名> # 删除镜像
docker build -t <镜像名> . # 构建镜像(基于 Dockerfile)
容器相关
docker run -it <镜像> /bin/bash # 启动交互式容器
docker run -d -p 8080:80 <镜像> # 后台运行,端口映射
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker stop <容器ID> # 停止容器
docker rm <容器ID> # 删除容器
docker exec -it <容器ID> bash # 进入正在运行的容器
卷与网络
docker volume create mydata # 创建卷
docker run -v mydata:/app/data ... # 使用卷
docker network create mynetwork # 创建网络
docker run --network=mynetwork ... # 指定网络
四、Dockerfile 基础语法
# 基础镜像
FROM python:3.10
# 维护者
LABEL maintainer="yourname@example.com"
# 设置工作目录
WORKDIR /app
# 复制文件
COPY requirements.txt .
# 安装依赖
RUN pip install -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "main.py"]
五、Docker Compose 简介(多容器管理)
📄 docker-compose.yml 示例
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
常用命令
docker-compose up -d # 后台启动所有服务
docker-compose down # 停止并清除所有服务
docker-compose logs -f # 查看日志
六、镜像优化建议
- 使用官方 slim 或 alpine 镜像:体积小
- 使用
.dockerignore
避免复制无用文件 - 多阶段构建(multi-stage build)减少最终镜像体积
- 合理合并 RUN 命令减少镜像层
七、常见问题排查
问题 |
解决方式 |
镜像拉取慢 / 超时 |
配置国内镜像源(如阿里云、USTC) |
容器启动后立即退出 |
检查 CMD 或 ENTRYPOINT 是否正确 |
端口无法访问 |
确认端口是否映射,容器是否启动成功 |
文件同步不生效 |
检查 volume 是否挂载正确 |
容器内没有 curl / ping |
安装缺失工具: |
八、Windows 下 Docker 使用建议
- 安装 Docker Desktop for Windows
- 默认使用 WSL2 后端:性能好,兼容性好
- 镜像路径默认存储在:
C:\Users\<用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx
- 镜像清理需用
docker system prune -a
九、学习资源推荐
资源类型 |
推荐 |
官方文档 |
|
中文文档 |
|
GitHub 实例 |