Docker入门基础使用
一、什么是 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:- .:/appdb:image: postgres:15environment:POSTGRES_USER: userPOSTGRES_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
九、学习资源推荐
资源类型 | 推荐 |
官方文档 | Docker Docs |
中文文档 | https://yeasy.gitbook.io/docker_practice/ |
GitHub 实例 | https://github.com/docker/awesome-compose |