Windows 11 Docker 教程
- Windows 11 Docker 安装与使用完全指南
- 1. 准备工作与环境要求
- 2. 安装 WSL 2
- 3. 下载并安装 Docker Desktop
- 4. 首次启动与配置
- 5. 运行你的第一个容器:Hello World
- 6. 核心概念与常用命令
- 6.1 核心概念
- 6.2 常用 Docker 命令
- 7. 实战:在容器中运行一个 Nginx Web 服务器
- 8. 使用 Dockerfile 构建自定义镜像
- 9. 使用 Docker Compose 管理多容器应用
- 10. 常见问题与故障排除
- 11. 总结
Windows 11 Docker 安装与使用完全指南
Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,从而实现快速部署和跨平台运行。对于 Windows 11 用户,尤其是开发者,掌握 Docker 能极大提升开发、测试和部署的效率。本教程将手把手教你如何在 Windows 11 上安装 Docker Desktop,并完成你的第一个容器化应用。
1. 准备工作与环境要求
在开始安装 Docker 之前,请确保你的 Windows 11 系统满足以下要求:
- 操作系统版本:Windows 11 64位
- 虚拟化支持:必须在 BIOS/UEFI 设置中开启 CPU 虚拟化技术(Intel VT-x 或 AMD-V)。
- WSL 2:Docker Desktop for Windows 依赖于 Windows Subsystem for Linux 2 (WSL 2) 作为后端。这是推荐的运行方式,性能更好,资源占用更少。
- 硬件虚拟化:在“任务管理器” -> “性能” -> “CPU” 中查看“虚拟化”是否已启用。
检查虚拟化是否开启:
- 按下
Ctrl + Shift + Esc打开任务管理器。 - 切换到“性能”选项卡。
- 查看“CPU”部分,确认“虚拟化”状态为“已启用”。
如果未启用,需要重启电脑进入 BIOS/UEFI 设置(通常在开机时按 F2、F10、Del 等键),找到 Virtualization Technology (VT-x) 或 SVM 选项并启用它。
2. 安装 WSL 2
如果你的系统尚未安装 WSL 2 如下图,请按以下步骤操作。这是 Docker Desktop 运行的前提。
方法一:使用命令行(推荐)
以管理员身份打开 PowerShell 或 Windows 终端,执行以下命令:
# 启用适用于 Linux 的 Windows 子系统dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart# 启用虚拟机平台功能dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart#bcdedit/sethypervisorlaunchtype auto# 重启计算机Restart-Computer**重启后更新 WSL,再次打开管理员 PowerShell:**wsl--update wsl--set-default-version 2 wsl--status3. 下载并安装 Docker Desktop
- 访问官网:打开 Docker 官网下载页面。
- 选择版本:点击“Download for Windows”按钮。Docker Desktop 对个人和小型团队免费。
- 运行安装程序:双击下载好的
Docker Desktop Installer.exe文件。 - 安装选项:
- 在安装向导中,建议勾选“使用 WSL 2 而不是 Hyper-V”(如果你的系统支持)。
- 其余选项保持默认即可。
- 完成安装:安装完成后,点击“Close”并重启电脑(如果提示)。
4. 首次启动与配置
- 启动 Docker Desktop:在开始菜单中找到“Docker Desktop”并启动。首次启动需要一些时间来完成初始化。
- 接受服务条款:首次启动会弹出 Docker 服务条款,阅读后点击“Accept”接受。
- 登录账户(可选):你可以选择登录 Docker Hub 账户,以便拉取和推送镜像。也可以稍后跳过。
- 检查状态:启动成功后,系统托盘区会出现 Docker 鲸鱼图标。右键点击图标,选择“Dashboard”可以打开管理界面。在 Dashboard 或终端中运行以下命令验证安装:
docker--versiondocker-compose--version如果成功显示版本号,说明 Docker 和 Docker Compose 已正确安装。
5. 运行你的第一个容器:Hello World
让我们通过一个简单的命令来验证 Docker 是否工作正常。
- 打开 PowerShell、命令提示符或 Windows 终端。
- 输入以下命令并回车:
dockerrun hello-world这个命令会执行以下操作:
- Docker 客户端联系 Docker 守护进程。
- 守护进程从 Docker Hub(默认的公共镜像仓库)拉取
hello-world镜像。 - 守护进程根据这个镜像创建一个新的容器并运行。
- 容器执行后,会打印出一段欢迎信息并退出。
如果你看到类似下面的输出,恭喜你,Docker 已经在你的 Windows 11 上成功运行了!
Hello from Docker! This message shows that your installation appears to be working correctly. ...6. 核心概念与常用命令
6.1 核心概念
- 镜像 (Image):一个只读的模板,包含了运行应用所需的代码、运行时、库、环境变量和配置文件。例如
nginx,mysql,python:3.9。 - 容器 (Container):镜像的运行实例。你可以创建、启动、停止、移动或删除容器。它是轻量级且可隔离的。
- 仓库 (Repository):集中存放镜像的地方。Docker Hub 是最大的公共仓库。
6.2 常用 Docker 命令
# 镜像相关dockerimages# 列出本地所有镜像dockerpull[镜像名]:[标签]# 从仓库拉取镜像,如 docker pull ubuntu:20.04dockerrmi[镜像ID]# 删除本地镜像# 容器相关dockerps# 列出正在运行的容器dockerps-a# 列出所有容器(包括已停止的)dockerrun[选项][镜像名][命令]# 创建并运行一个新容器# 常用选项:# -d: 后台运行# -p [主机端口]:[容器端口]: 端口映射,如 -p 8080:80# -v [主机目录]:[容器目录]: 数据卷挂载# --name [名称]: 为容器指定一个名字# -it: 交互式终端,通常与 /bin/bash 结合进入容器dockerstart[容器名/ID]# 启动已停止的容器dockerstop[容器名/ID]# 停止运行中的容器dockerrm[容器名/ID]# 删除已停止的容器dockerexec-it[容器名/ID]/bin/bash# 进入一个正在运行的容器# 查看信息与日志dockerlogs[容器名/ID]# 查看容器日志dockerinspect[容器名/ID]# 查看容器详细信息7. 实战:在容器中运行一个 Nginx Web 服务器
让我们运行一个更实用的例子:一个 Nginx Web 服务器。
拉取 Nginx 镜像:
dockerpull nginx:latest运行 Nginx 容器:
dockerrun-d-p8080:80--namemy-nginx nginx-d: 后台运行。-p 8080:80: 将主机的 8080 端口映射到容器的 80 端口(Nginx 默认端口)。--name my-nginx: 给容器起个名字。
访问测试:打开浏览器,访问
http://localhost:8080。你应该能看到 Nginx 的欢迎页面。管理容器:
dockerps# 查看运行中的容器,确认 my-nginx 在运行dockerstop my-nginx# 停止容器dockerstart my-nginx# 再次启动容器dockerrmmy-nginx# 删除容器(需先停止)
8. 使用 Dockerfile 构建自定义镜像
Dockerfile 是一个文本文件,包含了一系列指令,用于自动构建 Docker 镜像。
创建一个简单的 Python 应用示例:
创建项目文件夹,例如
myapp,并在其中创建以下文件:app.py(Python 应用)
fromflaskimportFlask app=Flask(__name__)@app.route('/')defhello():return'Hello Docker from Windows 11!'if__name__=='__main__':app.run(host='0.0.0.0',port=5000)requirements.txt(依赖文件)
flask==2.3.3Dockerfile(构建指令文件)
# 使用官方 Python 运行时作为父镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 将当前目录内容复制到容器的 /app 下 COPY . /app # 安装 requirements.txt 中指定的依赖 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 5000 EXPOSE 5000 # 定义环境变量 ENV FLASK_APP=app.py # 容器启动时运行 app.py CMD ["flask", "run", "--host=0.0.0.0"]构建镜像:在
myapp目录下打开终端,运行:dockerbuild-tmy-python-app.-t参数为镜像打标签,.表示使用当前目录的 Dockerfile。运行自定义镜像:
dockerrun-d-p5000:5000--namemy-app my-python-app访问
http://localhost:5000,你将看到 “Hello Docker from Windows 11!”。
9. 使用 Docker Compose 管理多容器应用
Docker Compose 用于定义和运行多容器的 Docker 应用。通过一个docker-compose.yml文件来配置所有服务。
示例:一个包含 Web 应用和 Redis 的简单组合
在项目根目录创建
docker-compose.yml:version:'3.8'services:web:build:.ports:-"5000:5000"depends_on:-redisredis:image:"redis:alpine"启动所有服务(在
docker-compose.yml所在目录运行):docker-composeup-d停止并移除所有服务:
docker-composedown
10. 常见问题与故障排除
- Docker Desktop 无法启动:检查 WSL 2 是否安装正确,虚拟化是否开启。可以尝试在 PowerShell(管理员)中运行
wsl --update和wsl --shutdown,然后重启 Docker Desktop。 - 镜像拉取慢:配置国内镜像加速器。在 Docker Desktop 设置 -> Docker Engine 中,添加以下配置(如阿里云、中科大镜像):
{"registry-mirrors":["https://your-mirror.mirror.aliyuncs.com"]} - 端口被占用:使用
netstat -ano | findstr :端口号查找占用端口的进程,并更改 Docker 容器的映射端口或停止冲突进程。 - 磁盘空间不足:Docker 镜像和容器会占用空间。定期使用
docker system prune -a清理未使用的镜像、容器、网络和构建缓存(谨慎使用,会删除所有未使用的资源)。
11. 总结
通过本教程,你已经在 Windows 11 上成功搭建了 Docker 环境,并学会了运行容器、构建镜像和使用 Docker Compose 的基本操作。Docker 的强大之处在于其一致性和可移植性,它能将你的开发环境与生产环境对齐,避免“在我机器上能跑”的问题。
下一步,你可以探索:
- 学习更复杂的 Dockerfile 指令。
- 将你的应用部署到云服务器(如使用 Docker 的云服务)。
- 学习 Docker 网络和数据卷的深入用法。
- 探索 Kubernetes 进行容器编排。
祝你容器化之旅顺利!