跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Windows Docker 命令行使用手册

Windows Docker 命令行使用手册涵盖安装配置、基础概念、镜像管理、容器操作、网络管理、数据卷存储、Docker Compose 及故障排查。内容包含系统要求、镜像加速器配置、常用命令示例、运行参数详解、网络模式选择、持久化存储方案、Compose 文件编写、开发工作流、多阶段构建及常见问题解决。适用于 Windows 10/11 环境下的 Docker Desktop 开发与测试场景,提供 PowerShell 与 Bash 混合操作指南。

CoderByte发布于 2026/2/21更新于 2026/10/24108 浏览

安装与配置

1. 系统要求
  • Windows 10/11 64 位(专业版/企业版/教育版)
  • 启用 Hyper-V 和 WSL 2(推荐)
  • 至少 4GB RAM
  • BIOS 中启用虚拟化
2. 安装步骤
# 1. 下载 Docker Desktop for Windows
# 访问 https://www.docker.com/products/docker-desktop
# 2. 安装后验证
docker --version
docker-compose --version
docker info
3. 配置镜像加速器(中国用户)
# 编辑 Docker 配置文件(如果不存在则创建)
notepad "$env:USERPROFILE\.docker\daemon.json"
# 添加以下内容:
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}

基础概念

Docker 三大核心组件
  • 镜像(Image):只读模板,包含运行环境
  • 容器(Container):镜像的运行实例
  • 仓库(Registry):存储镜像的服务器(默认 Docker Hub)
Windows 特殊注意事项
# Windows 与 Linux 容器模式切换
# 右键系统托盘 Docker 图标 → Switch to Windows Containers/Linux Containers
# 路径格式差异
# Linux 路径:/app/data
# Windows 路径:C:\app\data 或 /c/app/data(在 Docker 命令中)

镜像管理

常用命令
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
docker pull microsoft/dotnet:6.0
# 查看本地镜像
docker images
docker image ls
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"
# 删除镜像
docker rmi nginx:latest
docker image rm image_id
docker image prune -a # 删除所有未使用的镜像
# 构建镜像
docker build -t myapp:1.0 .
docker build -f Dockerfile.windows -t myapp:win .
# 导出/导入镜像
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
# 查看镜像历史
docker history nginx:latest
标签操作
# 为镜像打标签
docker tag nginx:latest myregistry.com/nginx:v1
# 推送镜像到仓库
docker login myregistry.com
docker push myregistry.com/nginx:v1

容器操作

基本操作
# 运行容器
docker run -d --name mynginx nginx
docker run -it --rm ubuntu bash # 交互式运行,退出自动删除
# 查看容器
docker ps # 运行中的容器
docker ps -a # 所有容器
docker ps -q # 只显示容器 ID
# 启动/停止/重启容器
docker start mynginx
docker stop mynginx
docker restart mynginx
docker pause mynginx
docker unpause mynginx
# 删除容器
docker rm mynginx
docker container prune # 删除所有停止的容器
# 查看容器日志
docker logs mynginx
docker logs -f mynginx # 实时查看
docker logs --tail 100 mynginx
docker logs --since 1h mynginx
容器交互
# 进入容器(推荐 exec)
docker exec -it mynginx bash
docker exec -it mynginx powershell # Windows 容器
docker exec mynginx ls /app
# 复制文件
docker cp mynginx:/etc/nginx/nginx.conf ./
docker cp ./config.json mynginx:/app/config.json
# 查看容器信息
docker inspect mynginx
docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx
docker stats mynginx # 资源使用情况
docker top mynginx # 容器内进程
运行参数详解
# 常用参数组合示例
docker run -d \
  --name webapp \
  --hostname myapp \
  -p 8080:80 \
  -p 443:443 \
  -v C:\data:/var/www/html \
  -e APP_ENV=production \
  --restart=unless-stopped \
  --memory="512m" \
  --cpus="1.5" \
  nginx:alpine
# 端口映射(Windows 防火墙需允许)
-p 80:80 # 主机端口:容器端口
-p 127.0.0.1:8080:80 # 绑定到特定 IP
# 环境变量
-e KEY=VALUE
--env-file .env
# 资源限制
--memory="256m"
--memory-swap="512m"
--cpus="0.5"
--cpu-shares=512

网络管理

# 查看网络
docker network ls
docker network inspect bridge
# 创建网络
docker network create mynetwork
docker network create --driver=bridge --subnet=172.20.0.0/16 mynet
# 容器连接到网络
docker run -d --name app1 --network=mynetwork nginx
docker network connect mynetwork existing_container
docker network disconnect mynetwork container_name
# 删除网络
docker network rm mynetwork
docker network prune # 删除未使用的网络
网络模式
# 不同网络模式
--network=bridge # 默认桥接
--network=host # 主机网络(Linux 容器)
--network=none # 无网络
--network=container:nginx # 共享其他容器的网络

数据卷与持久化存储

# 创建数据卷
docker volume create mysqldata
docker volume ls
# 使用数据卷
docker run -v mysqldata:/var/lib/mysql mysql
# 绑定挂载(Windows 路径)
docker run -v C:\docker\data:/app/data nginx
docker run -v /c/docker/data:/app/data nginx # WSL2 格式
# 查看卷信息
docker volume inspect mysqldata
# 删除数据卷
docker volume rm mysqldata
docker volume prune # 删除未使用的卷
# 挂载临时文件系统
docker run --tmpfs /tmp:rw,size=64m nginx

Docker Compose

基本使用
# 安装(Docker Desktop 已包含)
docker-compose --version
# 常用命令
docker-compose up -d # 启动服务
docker-compose down # 停止并删除
docker-compose ps # 查看状态
docker-compose logs -f # 查看日志
docker-compose exec app bash # 进入容器
docker-compose restart # 重启服务
docker-compose build # 重新构建
docker-compose.yml 示例
version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - appnet
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - appnet
volumes:
  mysql_data:
networks:
  appnet:
    driver: bridge

常用工作流

1. 开发环境搭建
# 运行开发数据库
docker run -d \
  --name dev-db \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=devpass \
  -v mysql_dev_data:/var/lib/mysql \
  mysql:8.0
# 运行 Redis 缓存
docker run -d \
  --name redis \
  -p 6379:6379 \
  redis:alpine
# 运行本地注册表
docker run -d \
  --name registry \
  -p 5000:5000 \
  -v registry_data:/var/lib/registry \
  registry:2
2. 应用部署
# 1. 构建应用镜像
docker build -t myapp:1.0 .
# 2. 运行应用
docker run -d \
  --name myapp \
  -p 80:80 \
  --restart unless-stopped \
  myapp:1.0
# 3. 更新应用(蓝绿部署)
docker build -t myapp:2.0 .
docker run -d --name myapp-v2 -p 8080:80 myapp:2.0
# 测试 v2 版本
docker stop myapp && docker rm myapp
docker rename myapp-v2 myapp
3. 数据备份与恢复
# 备份 MySQL 数据
docker exec mysql sh -c 'mysqldump -uroot -p$MYSQL_ROOT_PASSWORD --all-databases' > backup.sql
# 备份容器数据卷
docker run --rm \
  -v mysql_data:/volume \
  -v C:\backups:/backup \
  alpine tar cvf /backup/mysql_data.tar /volume
# 恢复数据
docker exec -i mysql sh -c 'mysql -uroot -p$MYSQL_ROOT_PASSWORD' < backup.sql
4. 多阶段构建示例
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]
docker build -t myapp:prod .

故障排查

常见问题解决
# 1. Docker 服务未启动
# 检查服务状态
Get-Service docker*
# 重启服务
Restart-Service docker
# 2. 端口冲突
netstat -ano | findstr :8080
# 停止占用进程或修改映射端口
# 3. 磁盘空间不足
docker system df # 查看磁盘使用
docker system prune -a # 清理所有未使用的对象
# 4. 容器启动失败
docker logs container_id # 查看日志
docker inspect container_id # 检查配置
# 5. 镜像拉取失败
# 检查网络连接
# 更换镜像源
# 登录 Docker Hub
# 6. Windows 路径问题
# 使用绝对路径:C:\data 或 /c/data
# 确保目录存在且权限正确
调试命令
# 检查容器健康状态
docker events # 查看实时事件
# 容器内调试
docker exec -it container_name ping db
docker exec -it container_name curl http://localhost
# 资源监控
docker stats
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 查看底层信息
docker info
docker version
日志收集
# 导出所有日志
Get-EventLog -LogName Application -Source Docker | Select-Object TimeGenerated, EntryType, Message | Export-Csv -Path docker_logs.csv
# 过滤错误日志
docker logs container_id 2>&1 | Select-String -Pattern "error|fail" -CaseSensitive

附录:常用命令速查表

# 系统管理
docker version
docker info
docker system df
docker system prune
# 镜像管理
docker images
docker pull
docker build
docker push
docker rmi
# 容器管理
docker run
docker ps
docker start/stop/restart
docker exec
docker logs
docker rm
# 网络管理
docker network ls
docker network create
docker network connect
# 数据管理
docker volume create
docker volume ls
# Compose
docker-compose up
docker-compose down
docker-compose logs
# 批量操作
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)

注意事项

  1. 权限问题:Windows 下 Docker 需要管理员权限运行某些操作
  2. 路径差异:Windows 与 Linux 路径格式不同,注意转换
  3. 防火墙:确保 Windows 防火墙允许 Docker 相关端口
  4. 数据持久化:重要数据务必使用卷或绑定挂载
  5. 资源限制:适当限制容器资源使用,避免影响宿主机
  6. 安全更新:定期更新 Docker 和镜像版本
  7. 生产环境:Windows Docker 主要用于开发测试,生产建议使用 Linux

本手册涵盖 Windows Docker 命令行常用操作,建议结合官方文档使用:

  • Docker Windows 文档
  • Docker 命令行参考

目录

  1. 安装与配置
  2. 1. 系统要求
  3. 2. 安装步骤
  4. 1. 下载 Docker Desktop for Windows
  5. 访问 https://www.docker.com/products/docker-desktop
  6. 2. 安装后验证
  7. 3. 配置镜像加速器(中国用户)
  8. 编辑 Docker 配置文件(如果不存在则创建)
  9. 添加以下内容:
  10. 基础概念
  11. Docker 三大核心组件
  12. Windows 特殊注意事项
  13. Windows 与 Linux 容器模式切换
  14. 右键系统托盘 Docker 图标 → Switch to Windows Containers/Linux Containers
  15. 路径格式差异
  16. Linux 路径:/app/data
  17. Windows 路径:C:\app\data 或 /c/app/data(在 Docker 命令中)
  18. 镜像管理
  19. 常用命令
  20. 搜索镜像
  21. 拉取镜像
  22. 查看本地镜像
  23. 删除镜像
  24. 构建镜像
  25. 导出/导入镜像
  26. 查看镜像历史
  27. 标签操作
  28. 为镜像打标签
  29. 推送镜像到仓库
  30. 容器操作
  31. 基本操作
  32. 运行容器
  33. 查看容器
  34. 启动/停止/重启容器
  35. 删除容器
  36. 查看容器日志
  37. 容器交互
  38. 进入容器(推荐 exec)
  39. 复制文件
  40. 查看容器信息
  41. 运行参数详解
  42. 常用参数组合示例
  43. 端口映射(Windows 防火墙需允许)
  44. 环境变量
  45. 资源限制
  46. 网络管理
  47. 查看网络
  48. 创建网络
  49. 容器连接到网络
  50. 删除网络
  51. 网络模式
  52. 不同网络模式
  53. 数据卷与持久化存储
  54. 创建数据卷
  55. 使用数据卷
  56. 绑定挂载(Windows 路径)
  57. 查看卷信息
  58. 删除数据卷
  59. 挂载临时文件系统
  60. Docker Compose
  61. 基本使用
  62. 安装(Docker Desktop 已包含)
  63. 常用命令
  64. docker-compose.yml 示例
  65. 常用工作流
  66. 1. 开发环境搭建
  67. 运行开发数据库
  68. 运行 Redis 缓存
  69. 运行本地注册表
  70. 2. 应用部署
  71. 1. 构建应用镜像
  72. 2. 运行应用
  73. 3. 更新应用(蓝绿部署)
  74. 测试 v2 版本
  75. 3. 数据备份与恢复
  76. 备份 MySQL 数据
  77. 备份容器数据卷
  78. 恢复数据
  79. 4. 多阶段构建示例
  80. 故障排查
  81. 常见问题解决
  82. 1. Docker 服务未启动
  83. 检查服务状态
  84. 重启服务
  85. 2. 端口冲突
  86. 停止占用进程或修改映射端口
  87. 3. 磁盘空间不足
  88. 4. 容器启动失败
  89. 5. 镜像拉取失败
  90. 检查网络连接
  91. 更换镜像源
  92. 登录 Docker Hub
  93. 6. Windows 路径问题
  94. 使用绝对路径:C:\data 或 /c/data
  95. 确保目录存在且权限正确
  96. 调试命令
  97. 检查容器健康状态
  98. 容器内调试
  99. 资源监控
  100. 查看底层信息
  101. 日志收集
  102. 导出所有日志
  103. 过滤错误日志
  104. 附录:常用命令速查表
  105. 系统管理
  106. 镜像管理
  107. 容器管理
  108. 网络管理
  109. 数据管理
  110. Compose
  111. 批量操作
  112. 注意事项

更多推荐文章

查看全部
  • Python + AI 实战指南:数据分析、LLM 应用与自动化办公三大方向
  • Git 远程仓库地址更换指南
  • 滑动窗口算法实战:最小和子数组与最长无重复子串
  • MySQL 备份与恢复实战:XtraBackup 和 mysqldump 详解
  • 15 个超级实用的 Python 技巧,提升开发效率
  • C++ 递归算法解析:汉诺塔问题
  • 基于 LangChain 和 ChatGPT 构建 PDF 问答机器人
  • 近五年体内微纳米机器人赋能肿瘤精准治疗综述:聚焦 GBM
  • NewBie-image-Exp0.1 AI 动漫图像生成快速入门指南
  • Neo4j 图数据库在 macOS 上的安装与基础操作指南
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • MySQL 约束详解:非空、主键与外键的核心作用
  • Java TCP 与 UDP 网络编程实战指南
  • AI Agent 持久记忆实战:Claude Code 接入 MemMachine 全流程
  • 基于 Spring Boot 的 WebSocket 实时通信服务实战
  • Python 常见数据类型全面解析
  • OpenClaw 深度解析:构建具备执行能力的 AI 智能体
  • C++ 入门实战指南:从环境搭建到面向对象编程
  • GitHub 启用双因素身份验证(2FA)配置指南:使用 TOTP.app 生成动态验证码
  • Java 异常处理:核心原理与实战最佳实践

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online