【Docker】Windows Docker 完全入门指南:从安装到实战的全流程记录
🐳 Windows Docker 完全入门指南:从安装到实战的全流程记录
本文完整记录了一位 Docker 新手在 Windows 系统下的学习历程,包含所有踩坑经历和解决方案,基于 2025 年真实环境验证,适合零基础读者参考。
📖 文章目录
- 初始状态与目标
- 学习路径导图
- 详细操作与问题记录
- 常用命令速查表
- 总结与建议
- 附录:国内镜像地址
🔍 一、初始状态与目标
初始困惑:
- 安装了 Docker Desktop 但界面空空如也
- 不知道如何打开 Docker 命令行
- 想配置镜像加速但找不到位置
- 没有创建容器的入口,完全不知道从何入手
学习目标:
- 成功打开 Docker 命令行并验证安装
- 配置镜像加速解决网络问题
- 拉取并运行 Nginx、MySQL、CentOS 等常用镜像
- 掌握基本的容器操作命令
🧭 二、学习路径导图
📦 三、详细操作与问题记录
✅ 1. 打开 Docker 命令行
真实问题:
不知道怎么开打命令窗口
解决方案:
- 按
Win + R
打开运行窗口 - 输入
powershell
或cmd
- 在打开的命令行中输入:
docker --version
验证成功:
Docker version 27.0.3, build 7d4bcd8
🌐 2. 配置镜像加速的曲折历程
第一次尝试 - 使用传统镜像加速器:
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}
结果:全部失效,出现连接错误
第二次尝试 - 更换镜像源:
{"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com"]
}
结果:仍然失败,需要外网环境
最终认知(2025年现状):
镜像源类型 | 状态 | 说明 |
---|---|---|
传统镜像加速器 | ❌ 全部失效 | 网易、百度、阿里云、清华等均已停服 |
国内镜像仓库 | ⚠️ 部分可用 | 需直接指定完整仓库地址 |
代理方案 | ✅ 稳定可用 | 需要本地代理客户端 |
离线导入 | ✅ 绝对可靠 | 适合内网、无外网环境 |
🐢 3. 拉取镜像的实战记录
(1)Nginx 镜像拉取与运行
可用地址:
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.1-alpine
给镜像打短标签(省得每次敲长名)
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.1-alpine nginx:alpine
以后本地就用 nginx:alpine
即可,例如:
运行命令:
docker run -d -p 8080:80 --name web nginx:alpine
遇到的问题:80端口被禅道占用
http://127.0.0.1 浏览器运行这个之后是禅道的页面
解决方案:改用8080端口
docker stop web && docker rm web
docker run -d -p 8080:80 --name web nginx:alpine
验证成功:访问 http://localhost:8080
看到 Nginx 欢迎页面
(2)MySQL 数据库服务
注:在pull msql之前需要先把Nginx服务关闭,不然MySQL 8.0 镜像很可能会拉取失败。原因分析:“开着 Nginx,pull MySQL 镜像失败”,也可能不是 Nginx 本身直接导致的,而是端口冲突或系统资源/网络配置问题。
可用地址:
docker pull docker.m.daocloud.io/mysql:8.0
本地打短标签,省得以后敲长名:
docker tag docker.m.daocloud.io/mysql:8.0 mysql:8.0
运行命令:
docker run -d --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
连接验证:
docker exec -it my-mysql mysql -uroot -p123456
(3)CentOS 系统环境
可用地址:
docker pull docker.m.daocloud.io/centos:centos7
本地打短标签:
docker tag docker.m.daocloud.io/centos:centos7 centos:7
运行命令:
docker run -it --rm centos:7 bash
成功进入:
[root@b5f065a2301 /]#
❌ 4. 常见错误与修复方案
错误1:Unable to find image 'xxx' locally
完整错误信息:
Unable to find image 'ubuntu:latest' locally
原因分析:本地没有镜像,Docker 尝试从远程拉取但网络连接失败
解决方案对比表:
方案 | 操作 | 适用场景 |
---|---|---|
国内镜像仓库 | 直接使用完整仓库地址拉取 | 有基础网络但无法访问Docker Hub |
配置代理 | Docker Desktop → Settings → Proxies | 本地已有代理客户端 |
离线导入 | docker load -i xxx.tar | 完全无外网、内网环境 |
错误2:500 Internal Server Error
完整错误信息:
request returned 500 Internal Server Error for API route and version
http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/version
原因分析:Docker Desktop 的 WSL 2 后端崩溃
修复步骤:
步骤 | 命令 | 说明 |
---|---|---|
1. 关闭Docker | 任务栏右键 → Quit | 完全退出 |
2. 停止WSL | wsl --shutdown | 关闭所有子系统 |
3. 注销发行版 | wsl --unregister docker-desktop | 清理损坏的环境 |
4. 注销数据 | wsl --unregister docker-desktop-data | 清理数据(镜像会丢失) |
5. 重启Docker | 重新启动Docker Desktop | 自动重建环境 |
Docker Desktop崩溃时的状态截图
注:如果以上还是不能解决,就只能试着卸载重装了
附:安装教程:Windows 安装docker(详细图解)
错误3:端口冲突
现象:访问 http://localhost
显示其他服务页面(如禅道)
解决方案:
- 查看端口占用:
netstat -ano | findstr ":80"
- 更改映射端口:
-p 8080:80
(宿主机端口:容器端口)
🧩 四、常用命令速查表
任务 | 命令 | 示例 |
---|---|---|
查看镜像 | docker images | docker images |
查看容器 | docker ps | docker ps -a (查看所有) |
运行容器 | docker run | docker run -d -p 80:80 nginx |
停止容器 | docker stop | docker stop my-nginx |
启动容器 | docker start | docker start my-nginx |
删除容器 | docker rm | docker rm my-nginx |
查看日志 | docker logs | docker logs -f web |
进入容器 | docker exec | docker exec -it centos bash |
导入镜像 | docker load | docker load -i nginx.tar |
导出镜像 | docker save | docker save nginx -o nginx.tar |
查看端口 | docker port | docker port web |
🧠 五、总结与建议
🎯 学习成果总结
通过这个完整的学习过程,你已经掌握了:
- 基础操作:Docker 命令行使用、镜像拉取、容器运行
- 网络配置:镜像加速、代理设置、端口映射
- 服务部署:Nginx Web服务器、MySQL数据库、CentOS系统环境
- 故障排查:网络问题、端口冲突、服务崩溃等常见错误的解决方法
🚀 后续学习建议
学习方向 | 推荐内容 | 难度 |
---|---|---|
容器编排 | Docker Compose 多服务编排 | ⭐⭐ |
镜像构建 | Dockerfile 编写与镜像构建 | ⭐⭐⭐ |
数据持久化 | 数据卷(Volume)与挂载 | ⭐⭐ |
网络进阶 | 自定义网络、容器互联 | ⭐⭐⭐ |
生产部署 | Docker Swarm / Kubernetes | ⭐⭐⭐⭐ |
💡 给新手的实用建议
- 起步阶段:先掌握基础命令,不要急于学习高级特性
- 网络问题:国内环境优先考虑代理或国内镜像仓库方案
- 数据安全:重要数据一定要使用 Volume 持久化
- 资源管理:定期清理无用镜像和容器释放磁盘空间
📎 六、附录:国内镜像地址(2025年10月验证)
镜像 | 可用地址 | 提供商 |
---|---|---|
Nginx | swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.1-alpine | 华为云 |
MySQL | docker.m.daocloud.io/mysql:8.0 | DaoCloud |
CentOS | docker.m.daocloud.io/centos:centos7 | DaoCloud |
Redis | docker.m.daocloud.io/redis:alpine | DaoCloud |
Ubuntu | swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu:22.04 | 华为云 |
Docker生态系统示意图:该图取自网络
版权声明:本文基于真实学习经历整理,所有问题和解决方案均经过实践验证。欢迎分享,但请注明出处。