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
相关推荐
XIAOHEZIcode11 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
武子康1 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化