Docker 使用手册

一、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
相关推荐
古月方枘Fry1 小时前
MGRE实验
运维·服务器
stolentime2 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
“码”力全开3 小时前
解耦异构算力与多协议接入:基于Docker与源码交付的开源企业级GB28181/RTSP边缘计算AI视频管理平台架构深度解析
人工智能·docker·开源
bush43 小时前
嵌入式linux学习记录四
linux·运维·学习
maomao大哥闯天下4 小时前
K8s如何实现滚动更新、健康检查与探测机制
docker·容器·kubernetes
kaisun644 小时前
Docker 构建网络问题排查
网络·docker·eureka
lihao lihao4 小时前
软硬链接
linux·运维·服务器
TOWE technology4 小时前
智能安防监控系统如何做好防雷?——视频信号SPD综合应用方案解析
运维·服务器·防雷产品·信号保护·信号防雷·spd
楼田莉子4 小时前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构