一、Docker 基础概念
| 术语 | 说明 |
|---|---|
| 镜像(Image) | 只读的应用模板,包含运行应用所需的代码、依赖、配置 |
| 容器(Container) | 镜像的运行实例,每个容器相互隔离,拥有独立的文件系统和网络 |
| Dockerfile | 定义镜像构建规则的文本文件,可自动化构建自定义镜像 |
| 仓库(Registry) | 存储镜像的服务,官方公共仓库为 Docker Hub,国内常用镜像源为加速仓库 |
二、Windows Docker Desktop 安装与配置
1. 安装前提
- Windows 10 2004+ / Windows 11 专业版 / 企业版 / 教育版
- 开启 WSL2(安装 Docker 时会自动提示配置)
- 管理员权限运行 PowerShell
2. 镜像源配置(已配置完成,附验证方法)
# 验证镜像源是否生效
docker info | Select-String "Registry Mirrors" -A 10
配置文件路径:Docker Desktop → Settings → Docker Engine,JSON 配置如下:
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": [],
"debug": false,
"experimental": false
}
配置完成后点击 Apply & Restart 重启 Docker。
三、核心命令速查(按使用场景分类)
1. 镜像管理命令
# 1. 拉取镜像(格式:docker pull 镜像名:标签)
docker pull redis:latest # 拉取最新版 Redis
docker pull nginx:1.25 # 拉取指定版本 Nginx
# 2. 查看本地镜像列表
docker images
# 3. 删除本地镜像(先删除依赖该镜像的容器)
docker rmi redis:latest # 删除指定镜像
docker image prune -a # 删除所有未使用的镜像(谨慎使用)
# 4. 构建自定义镜像(基于 Dockerfile)
docker build -t my-app:v1 . # 构建镜像,标签为 my-app:v1
2. 容器管理命令
# 1. 启动容器(后台运行,端口映射示例)
docker run -d --name redis -p 6379:6379 redis:latest
# 参数说明:
# -d:后台运行容器
# --name:指定容器名称(必须唯一)
# -p 宿主机端口:容器端口:端口映射,外部通过宿主机端口访问容器服务
# 2. 查看容器状态
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
# 3. 停止/重启/删除容器
docker stop redis # 停止指定容器
docker restart redis # 重启容器
docker rm redis # 删除已停止的容器
docker rm -f redis # 强制删除运行中的容器
# 4. 进入容器内部(调试用)
docker exec -it redis bash # 进入 Redis 容器(Linux 镜像)
docker exec -it redis redis-cli # 直接进入 Redis 客户端
3. 日志与调试命令
# 查看容器日志
docker logs redis # 查看所有日志
docker logs -f redis # 实时跟踪日志输出
# 查看容器资源占用
docker stats redis # 查看 CPU/内存/网络占用
# 查看容器详细信息
docker inspect redis
4. 数据持久化(关键,容器删除数据不丢失)
# 1. 挂载宿主机目录到容器(绑定挂载)
docker run -d --name redis -p 6379:6379 -v D:\redis-data:/data redis:latest redis-server --appendonly yes
# 说明:-v 宿主机路径:容器路径,宿主机路径需提前创建
# 2. 使用 Docker 数据卷(推荐,无需管理宿主机路径)
docker volume create redis-data # 创建数据卷
docker run -d --name redis -p 6379:6379 -v redis-data:/data redis:latest redis-server --appendonly yes
docker volume ls # 查看数据卷列表
docker volume rm redis-data # 删除数据卷(数据会被清除,谨慎使用)
5. 网络管理命令
# 查看 Docker 网络列表
docker network ls
# 创建自定义网络(容器间通信更安全)
docker network create my-network
# 启动容器并加入自定义网络
docker run -d --name redis --network my-network redis:latest
四、实战:Redis 容器完整部署(含持久化)
1. 启动带持久化的 Redis 容器
docker run -d `
--name redis `
-p 6379:6379 `
-v redis-data:/data `
redis:latest `
redis-server --appendonly yes --requirepass "yourpassword"
--appendonly yes:开启 AOF 持久化,数据写入文件--requirepass "yourpassword":设置 Redis 访问密码(建议生产环境使用)
2. 验证 Redis 连接
# 宿主机测试连接(需安装 Redis 客户端)
redis-cli -h localhost -p 6379 ping # 无密码时返回 PONG
redis-cli -h localhost -p 6379 -a yourpassword ping # 带密码连接
五、常见问题排查
1. 拉取镜像超时 / 失败
- 检查镜像源配置是否生效(
docker info查看 Registry Mirrors) - 切换镜像源顺序,优先使用
https://docker.xuanyuan.me - 重启 Docker 服务(托盘图标 → Restart)
2. 容器端口无法访问
- 检查端口是否被占用:
netstat -ano | findstr 6379 - 确认防火墙未拦截 Docker 端口
- 检查容器是否正常运行:
docker ps
3. 容器重启后数据丢失
- 未配置数据持久化,需添加
-v参数挂载宿主机目录或数据卷 - 容器被删除重建,数据卷未被删除(
docker volume ls查看)
六、进阶:Dockerfile 自定义镜像示例
1. 基础 Redis 自定义镜像(带配置文件)
创建 Dockerfile 文件:
FROM redis:latest
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
构建并启动镜像:
docker build -t my-redis:v1 .
docker run -d --name my-redis -p 6379:6379 my-redis:v1
七、常用命令清单(可直接复制使用)
# 查看 Docker 版本
docker --version
# 启动/停止 Docker Desktop(PowerShell 管理员)
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"
Stop-Process -Name "Docker Desktop" -Force
# 一键清理所有未使用的镜像、容器、数据卷
docker system prune -a --volumes