Windows 下 Docker 安装与使用全攻略(含避坑指南)

Windows 下 Docker 安装与使用全攻略(含避坑指南)
告别“在我机器上好好的”魔咒,一个容器搞定所有环境问题!

“这代码在我电脑上跑得好好的,怎么一到你那就挂了呢?” —— 这句话是不是听着耳熟?作为一名开发者,你可能无数次被环境差异搞得焦头烂额。

Python版本不对、Node.js依赖冲突、数据库配置麻烦……这些问题那是非常熟悉的。

Docker 这个神器能帮你彻底解决这些烦恼!

这篇文章,我来手把手教你在Win11上安装和使用Docker,让你享受一致的开发体验。

一、为什么Windows开发者也需要Docker?

你可能会想:“Docker不是主要在Linux上用的吗?我在Windows上折腾这个干嘛?”

问得好!这里有几个实实在在的理由:

1. 开发环境一致性

你写代码用的是Windows,但服务器跑的是Linux?没问题!Docker容器在任何系统上运行的行为都是一样的。你再也不用担心“本地能跑,上线就崩”的尴尬。

2. 快速搭建开发环境

想用MySQL?一条命令搞定。需要Redis?再加一条。不用手动下载、安装、配置,省时省力。

3. 保持系统整洁

每个应用都在独立的容器里运行,不会污染你的Windows系统。卸载也简单,删除容器即可。

4. 团队协作标准化

新同事加入项目?给他一个Docker配置文件,几分钟就能把开发环境跑起来,不用再花半天配环境。

5. 学习新技术成本低

想试试MongoDB?用Docker跑一个,玩够了就删掉,完全不留下任何痕迹。

简单说,Docker就像是个万能应用打包盒,让你在Windows上也能轻松享受Linux般的开发体验。

二、Docker是个啥?简单解释一下

想象一下:你做了个美味的蛋糕(你的应用),Docker帮你把蛋糕连同盘子、叉子、餐巾纸(所有依赖)一起打包进一个密封盒(容器)。这个盒子在任何桌子上(任何系统)打开,都能吃到一模一样的蛋糕。

传统方式是:你告诉别人“需要烤箱、面粉、糖……”,别人自己准备,结果可能做出个煎饼。而Docker是直接把成品打包送过去。

技术上讲,Docker使用容器化技术,比虚拟机轻量得多,启动速度秒级,资源占用也少。

三、安装前的准备工作

在开始之前,确保你的Win11满足以下条件:

  • 系统版本:Windows 11 64位(家庭版、专业版等都行)
  • 内存:至少4GB(建议8GB以上)
  • 存储空间:至少60GB可用空间
  • 虚拟化支持:需要在BIOS/UEFI中开启(后面会教你怎么检查)

小贴士:Win11家庭版没有Hyper-V,但可以通过WSL 2完美运行Docker,所以家庭版用户不用担心!

四、一步步安装Docker

步骤1:检查并开启虚拟化

  1. Ctrl+Shift+Esc打开任务管理器
  2. 切换到“性能”标签页
  3. 查看右下角“虚拟化”状态

如果显示“已启用”,如下图所示:

恭喜,跳过这步。

如果“已禁用”,需要重启电脑进入BIOS/UEFI设置,找到虚拟化技术(通常叫Intel VT-x或AMD-V)并开启。

步骤2:安装WSL 2(Docker的好搭档)

WSL(Windows Subsystem for Linux)让Windows能原生运行Linux程序,WSL 2性能更好,是Docker的推荐后端。

  1. 管理员身份打开PowerShell

输入以下命令:

# 启用WSL功能 dism.exe /online /enable-feature/featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用虚拟机平台功能 dism.exe /online /enable-feature/featurename:VirtualMachinePlatform /all /norestart 
  1. 重启电脑(必须的,别偷懒!)

重启后,再次以管理员身份打开PowerShell,执行:

# 安装WSL wsl --install 

启动之后,你会看到如下界面:

验证安装:运行 wsl --list --verbose

wsl --list --verbose 

步骤3:安装Docker Desktop

  1. 访问Docker官网下载安装包:https://www.docker.com/products/docker-desktop
  2. 双击下载的 Docker Desktop Installer.exe
  3. 安装过程中,你只需要等待即可

安装完成后,启动 Docker ,会让你登录,你可以选择不登录,直接进来:

步骤4:验证安装

打开PowerShell或命令提示符,输入:

docker --version 

看到版本号输出,比如 Docker version 29.1.3, build f52814d,说明安装成功。

再试个经典的:

docker run hello-world 

如果看到“Hello from Docker!”的欢迎信息,说明你可以正式使用 Docker 了,但。。。如果不出意外,你会看到这样的结果:

也就是找不到镜像,具体的错误信息:

Unable to find image 'hello-world:latest' locally docker: Error response from daemon: failed to resolve reference "docker.io/library/hello-world:latest": failed to do request: Head "https://registry-1.docker.io/v2/library/hello-world/manifests/latest": dialing registry-1.docker.io:443 container via direct connection because Docker Desktop has no HTTPS proxy: connecting to registry-1.docker.io:443: dial tcp 185.60.216.169:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Docker 试图从Docker Hub(官方镜像仓库)下载hello-world镜像,但是网络连接失败了。

此时我们可以配置镜像加速器(科学上网)。

步骤5:配置镜像加速

我试了很多加速地址,就这个好使:https://docker.1ms.run

{"registry-mirrors":["https://docker.1ms.run"],"features":{"buildkit":true}}

配置好以后,用 docker info 看一下:

这个时候再运行 docker run hello-world 就可以正常下载了:

PS:如果镜像加速不生效,可以直接在 docker 命令中指定从哪里查询、下载、使用。比如:

docker search docker.1ms.run/mysql 

五、Docker常用命令演示

安装好了,现在来试试。以下命令你肯定会经常用到:

1. 镜像相关命令(镜像好比容器的“安装包”)

# 搜索镜像(比如搜索MySQL) docker search docker.1ms.run/mysql # 拉取镜像到本地(下载) docker pull nginx # 查看本地所有镜像 docker images # 删除镜像 docker rmi 镜像名或ID 

2. 容器相关命令(容器是镜像运行后的实例)

# 运行容器(基本格式) docker run [选项] 镜像名 # 运行nginx容器,并映射端口 docker run --name my-web -p 8080:80 -d nginx # --name 给容器起名# -p 端口映射(主机端口:容器端口)# -d 后台运行# 查看运行中的容器 docker ps# 查看所有容器(包括停止的) docker ps-a # 停止容器 docker stop 容器名或ID # 启动已停止的容器 docker start 容器名或ID # 重启容器 docker restart 容器名或ID # 删除容器(必须先停止) docker rm 容器名或ID # 强制删除运行中的容器 docker rm-f 容器名或ID # 查看容器日志(调试神器) docker logs 容器名或ID # 进入容器内部(像SSH一样) docker exec -it 容器名或ID /bin/bash 

3. 实战演练:运行一个Web服务器

让我们实际操练一下,运行一个Nginx服务器:

# 1. 拉取nginx镜像(如果还没拉取过) docker pull docker.1ms.run/nginx # 2. 运行容器 docker run --name my-nginx -p 8080:80 -d docker.1ms.run/nginx # 3. 查看容器是否运行 docker ps# 4. 打开浏览器访问 http://localhost:8080# 看到Nginx欢迎页,成功!# 5. 查看容器日志 docker logs my-nginx # 6. 进入容器内部看看 docker exec -it my-nginx /bin/bash # 进去后可以执行 ls、cat 等命令,输入 exit 退出# 7. 停止容器 docker stop my-nginx # 8. 删除容器 docker rm my-nginx 

执行步骤及结果:

4. 其他实用命令

# 查看Docker系统信息 docker info # 查看磁盘使用情况 docker system df # 清理未使用的镜像、容器等 docker system prune # 一次性清理所有未使用的资源(谨慎使用) docker system prune -a 

六、解决常见问题

1. 拉取镜像慢如蜗牛?

这个在前面我已经演示过如何配置,这里再重申一下,因为这个我相信是绝大多少人都会碰到的情况,甚至有时候配了镜像加速也会失效,直至劝退、放弃使用 Docker。

在Docker Desktop中:

  1. 右键系统托盘中的Docker图标 → Settings
  2. 选择“Docker Engine”
  3. 点击“Apply & Restart”

在配置文件中添加:

{"registry-mirrors":["镜像加速地址1","镜像加速地址2"]}

有时候你配置的镜像加速不起作用,那就多试几个,还可以在拉取镜像时指定加速地址,像这样:

docker pull docker.1ms.run/nginx 

2. Docker启动失败?

  • 检查WSL是否安装正确:运行 wsl --list --verbose
  • 确保虚拟化已开启(任务管理器中查看)
  • 尝试以管理员身份运行Docker Desktop

3. 命令记不住怎么办?

记住最常用的几个就行:docker rundocker psdocker stopdocker rm

其他需要时查文档,用多了自然记住。

七、接下来玩什么?

现在你已经掌握了Docker的基本操作,可以尝试更高级的玩法:

  1. 定制自己的镜像:编写Dockerfile,把自己的应用打包成镜像
  2. 多容器编排:使用Docker Compose一键启动多个关联容器(比如Web应用+数据库+缓存)
  3. 数据持久化:学习使用卷(volumes)保存容器数据
  4. 网络配置:让多个容器互相通信

Docker的世界很大,我们使用它的关键不是记住所有命令,而是理解容器化的思想——一次打包,到处运行。


欢迎关注、点赞、收藏,下次遇到Docker问题不迷路! 🐳

Read more

曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 当年,微软一句“Windows 10 将是最后一个版本”的表态,让不少用户以为 Windows 进入了“只更新、不换代”的时代。但几年过去,现实却完全不同。 在 Windows 11 发布之后,如今关于 Windows 12 的传闻再次密集出现。从内部代号、代码片段,到硬件厂商的暗示与 OEM 预热标签,种种线索拼在一起,勾勒出一个明显的趋势——这不会只是一次常规升级,而更像是一次围绕 AI 的平台级重构。 更关键的是,这次争议,可能远比当年 TPM 2.0 更大。 精准卡位 Windows 10 退场的时间?

By Ne0inhk
Python热度下滑、AI能取代搜索引擎?TIOBE最新榜单揭晓!

Python热度下滑、AI能取代搜索引擎?TIOBE最新榜单揭晓!

整理 | 屠敏 出品 | ZEEKLOG(ID:ZEEKLOGnews) 日前,TIOBE 发布了最新的 3 月编程语言榜单。整体来看,本月排名变化不算大,但榜单中仍然出现了一些值得关注的小波动。  AI 工具能帮大家秒懂最新编程语言趋势? 由于 2 月天数较少,3 月的榜单整体变化有限。借着这次发布,TIOBE CEO Paul Jansen 也回应了一个最近被频繁讨论的问题:为什么 TIOBE 指数仍然依赖搜索引擎统计结果?在大语言模型流行的今天,直接询问 AI 哪些编程语言最流行,是不是更简单? 对此,Jansen 的回答是否定的。 他解释称,TIOBE 指数本质上统计的是互联网上关于某种编程语言的网页数量。而大语言模型的训练数据同样来自这些网页内容,因此从信息来源来看,两者并没有本质区别。换句话说,LLM 的判断,本质上也是建立在这些网页数据之上的。 Python 活跃度仍在下降

By Ne0inhk
“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

「极客头条」—— 技术人员的新闻圈! ZEEKLOG 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:[email protected]) 整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 一分钟速览新闻点! * “裸奔龙虾”已高达27万只!业内人士警告:一旦黑客入侵,敏感信息一秒搬空 * 阿里云 CTO 周靖人代管千问模型一号位,刘大一恒管理更多团队 * 中国传媒大学砍掉翻译、摄影等 16 个本科专业,直言教育要面向人机分工时代 * 雷军放话:小米将很快推出 L3、L4 的驾驶 * 消息称原理想汽车智驾一号位郎咸朋具身智能赛道创业 * vivo 前产品经理宋紫薇创业,瞄准 AI 时尚Agent,获亿元融资 * MiniMax 发布龙虾新技能,股价暴涨超 23% * 薪资谈判破裂,三星电子

By Ne0inhk
一天开13个会、一个Bug要修200天!前亚马逊L7爆料:这轮大裁员,AI只是“背锅侠”

一天开13个会、一个Bug要修200天!前亚马逊L7爆料:这轮大裁员,AI只是“背锅侠”

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 过去一年,大型科技公司的裁员消息几乎从未停过。但当公司对外给出的理由越来越统一,“AI 让组织更高效”,也有越来越多内部员工开始提出另一种质疑:事情或许没那么简单。 最近,一段来自前亚马逊员工 Becky 的 YouTube 视频在开发者社区流传开来。她曾在亚马逊工作 7 年,其中 5 年担任 L7 级别的技术管理者,负责过团队年度规划(OP1)等核心管理工作——可去年,她主动离开了亚马逊。 就在最近,她的三位前同事接连被裁,其中两人还是 H-1B 签证员工,都背着房贷压力。其中一位同事忍不住给 Becky 发消息:“你去年离开的时候,是不是已经预料到会发生这些?” 对此,Becky 的回答很坦诚:她不知道具体什么时候会裁员,但她早就感觉情况不对劲了。 在她看来,这轮裁员被归因为

By Ne0inhk