公司动态
Windows系统Docker Desktop安装配置与实战指南
1. Docker Desktop for Windows 环境准备1.1 系统要求与兼容性检查在Windows系统上运行Docker Desktop需要满足特定的硬件和软件要求。首先确认你的Windows版本是Windows 10 64位专业版、企业版或教育版版本1903或更高或者Windows 11。家庭版用户需要升级到专业版或安装WSL2后端。硬件方面需要64位处理器支持二级地址转换(SLAT)至少4GB系统内存建议8GB以上在BIOS中启用虚拟化技术VT-x/AMD-V检查虚拟化是否启用的方法打开任务管理器CtrlShiftEsc切换到性能标签页查看CPU部分是否显示虚拟化已启用注意如果显示未启用需要进入BIOS设置开启虚拟化支持。不同主板的设置路径不同通常在Advanced或CPU Configuration选项中。1.2 安装WSL2后端Docker Desktop for Windows默认使用WSL2Windows Subsystem for Linux 2作为后端引擎。安装步骤如下以管理员身份打开PowerShell并运行wsl --install安装完成后设置WSL2为默认版本wsl --set-default-version 2从Microsoft Store安装一个Linux发行版如Ubuntu验证WSL2安装成功wsl -l -v应该能看到安装的发行版和VERSION 2的标识。1.3 Docker Desktop下载与安装从Docker官网下载最新的Docker Desktop for Windows安装包双击安装文件按照向导完成安装安装完成后从开始菜单启动Docker Desktop首次启动时会提示启用WSL2集成功能建议勾选所有选项安装完成后系统托盘会出现Docker图标右键可以访问常用功能菜单。2. Docker Desktop基础配置2.1 镜像源加速配置国内用户建议配置镜像加速器以提高拉取镜像的速度右键系统托盘Docker图标选择Settings导航到Docker Engine选项卡在配置JSON中添加或修改registry-mirrors项{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }点击Apply Restart保存并重启Docker服务2.2 资源分配调整根据你的机器配置调整Docker资源限制进入Settings → Resources调整CPU核心数建议留1-2核给系统调整内存大小建议不超过物理内存的75%设置磁盘映像大小默认60GB根据需求调整配置网络代理如有需要2.3 WSL集成设置在Settings → Resources → WSL Integration中启用已安装的WSL发行版集成选择要在其中运行Docker的发行版建议勾选Enable integration with my default WSL distro3. 核心功能使用指南3.1 容器生命周期管理基本容器操作命令# 拉取镜像 docker pull nginx:latest # 运行容器 docker run -d -p 80:80 --name my-nginx nginx # 查看运行中的容器 docker ps # 停止容器 docker stop my-nginx # 启动已停止的容器 docker start my-nginx # 删除容器 docker rm my-nginx3.2 数据持久化与卷管理在Windows上使用Docker卷的几种方式命名卷推荐用于数据持久化docker run -d -v my-data:/data --name test-container alpine绑定挂载将主机目录映射到容器docker run -d -v C:\Users\YourName\data:/data --name test-container alpine通过WSL2访问Linux文件系统docker run -d -v /mnt/wsl/data:/data --name test-container alpine3.3 网络配置实践Docker网络模式比较网络模式说明适用场景bridge默认模式容器通过docker0桥接网络通信单主机容器间通信host容器直接使用主机网络栈需要高性能网络的应用none禁用所有网络特殊安全需求overlay多主机网络Swarm集群环境创建自定义网络docker network create --driver bridge my-network docker run -d --network my-network --name container1 nginx docker run -d --network my-network --name container2 nginx4. 开发场景实战4.1 开发环境容器化以Node.js开发环境为例创建DockerfileFROM node:16 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [npm, start]构建镜像docker build -t my-node-app .运行开发容器带热重载docker run -dp 3000:3000 -v ${PWD}:/app -v /app/node_modules --name my-app my-node-app4.2 数据库服务部署部署MySQL数据库的最佳实践创建数据卷docker volume create mysql-data运行MySQL容器docker run -d \ --name mysql-server \ -v mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDmy-secret-pw \ -p 3306:3306 \ mysql:8.0连接数据库docker exec -it mysql-server mysql -uroot -p4.3 多容器应用编排使用docker-compose.yml管理多服务应用version: 3.8 services: web: build: . ports: - 5000:5000 volumes: - .:/code depends_on: - redis redis: image: redis:alpine启动应用docker-compose up -d5. 常见问题排查5.1 启动失败问题问题1Docker Desktop启动失败提示Virtualization not enabled解决方案确认BIOS中已启用虚拟化确保Windows功能中启用了Hyper-V虚拟机平台Windows子系统Linux版问题2WSL2初始化失败解决方案更新WSL内核组件wsl --update设置默认WSL版本wsl --set-default-version 25.2 网络连接问题容器无法访问外网检查步骤确认主机可以访问互联网检查Docker网络配置docker network inspect bridge尝试重启Docker网络服务docker network prune容器间无法通信解决方案确保容器在同一网络中检查防火墙设置使用容器名而非IP进行通信5.3 性能优化技巧文件I/O性能避免在Windows和Linux文件系统间频繁读写将项目代码放在WSL2文件系统中如\wsl$\Ubuntu\home内存管理限制容器内存使用docker run -d --memory 512m --memory-swap 1g my-image构建优化使用.dockerignore文件排除不必要的文件合理安排Dockerfile指令顺序利用构建缓存6. 高级功能探索6.1 Kubernetes集成Docker Desktop内置了单节点Kubernetes集群启用Kubernetes进入Settings → Kubernetes勾选Enable Kubernetes等待集群初始化完成验证安装kubectl get nodes部署示例应用kubectl create deployment nginx --imagenginx kubectl expose deployment nginx --port80 --typeNodePort6.2 开发扩展功能使用Dev Environments创建基于Git仓库的开发环境支持多人协作开发自动同步代码变更Extensions市场安装第三方扩展如RedisInsightRedis可视化管理Postgres AdminPostgreSQL管理界面Snyk安全漏洞扫描6.3 CI/CD管道集成在本地测试构建流程docker buildx create --use docker buildx build --platform linux/amd64,linux/arm64 -t my-image .使用Docker Compose测试多环境部署docker-compose -f docker-compose.yml -f docker-compose.prod.yml up与GitHub Actions集成示例jobs: build: runs-on: windows-latest steps: - uses: actions/checkoutv2 - name: Build Docker image run: docker build -t my-image .