windows docker(超详细)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。通过容器化技术,开发者可以确保应用程序在不同环境中(如开发、测试、生产环境)保持一致的行为。对于 Windows 用户来说,Docker 提供了在 Windows 操作系统上运行 Linux 或 Windows 容器的能力,解决了跨平台部署的复杂性问题。
想象一下,Docker 就像一个标准化的集装箱:无论货物(应用程序)是什么,只要按照规范打包,就可以被任何支持 Docker 的系统快速装卸和运输(部署)。这种特性使得团队协作和持续交付流程更加高效。
在 Windows 上安装 Docker 的准备工作
硬件与系统要求
- Windows 10 64位:需专业版、企业版或教育版(家庭版需开启 Hyper-V 需额外步骤)。
- 64位处理器:支持 SLAT(第二层地址转换)技术。
- 4GB 内存以上:建议分配至少 2GB 给 Docker Desktop。
启用 Hyper-V 和容器功能
Docker 在 Windows 上依赖 Hyper-V 和容器功能。通过以下步骤启用:
- 打开 控制面板 > 程序 > 启用或关闭 Windows 功能。
- 勾选 Hyper-V 和 Containers,重启电脑。
安装 Docker Desktop
- 访问 Docker 官方网站 ,下载 Windows 版本。
- 安装过程中选择 Windows Linux Dual Mode(支持同时运行两种容器)。
- 首次启动时,根据提示登录 Docker Hub 账户(可选)。
从零开始:在 Windows 上运行第一个 Docker 容器
验证安装
打开 PowerShell 或命令提示符,输入以下命令:
docker --version
docker run hello-world
如果看到“Hello from Docker!”的输出,说明环境配置成功。
运行一个简单的 Web 服务
使用官方 Nginx 镜像快速部署 Web 服务器:
docker run -d -p 8080:80 --name my-nginx nginx
-d
:后台运行容器。-p 8080:80
:将容器的 80 端口映射到主机的 8080 端口。--name my-nginx
:指定容器名称。
通过浏览器访问 http://localhost:8080
,即可看到 Nginx 默认页面。
Dockerfile:构建自定义镜像的蓝图
Dockerfile 的基本结构
Dockerfile 是一个文本文件,包含构建镜像的指令。以下是一个 Python 应用的示例:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
构建与运行镜像
在 Dockerfile 所在目录执行:
docker build -t my-python-app .
docker run -p 5000:5000 my-python-app
此时,应用将在 http://localhost:5000
启动。
Windows Docker 的高级用法与最佳实践
网络管理:连接容器与外部世界
通过 docker network
命令可以自定义容器网络:
docker network create my-network
docker run -d --name db --network my-network mysql:latest
docker run -d --name app --network my-network my-python-app
容器之间可通过服务名称(如 db
)直接通信,无需暴露到主机端口。
卷(Volume):持久化数据存储
数据库数据通常需要持久化。使用以下命令挂载卷:
docker volume create mysql-data
docker run -d --name mysql-container \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:latest
即使容器被删除,数据仍保留在 mysql-data
卷中。
典型应用场景与案例解析
场景 1:多环境一致性开发
开发团队使用 Docker 可避免“在我的机器上能运行”问题。例如:
FROM openjdk:17-jdk-slim
COPY target/myapp.jar /app.jar
CMD ["java", "-jar", "/app.jar"]
开发者只需执行 docker-compose up
即可启动完全一致的环境。
场景 2:微服务部署
结合 Docker Compose 可轻松管理多个服务。以下是一个简单 Compose 文件示例:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
运行 docker-compose up
后,Web 服务和数据库容器将自动启动并关联。
常见问题与解决方案
问题 1:端口已被占用
当运行容器时提示端口冲突:
docker run -p 8080:80 nginx
解决方案:检查占用端口的进程或更换端口:
netstat -ano | findstr :8080
docker run -p 8081:80 nginx
问题 2:镜像拉取失败
若因网络问题无法从 Docker Hub 下载镜像,可尝试:
docker pull --platform linux/x86_64 nginx
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx
结论:Windows Docker 的未来与价值
Docker 在 Windows 环境中的成熟支持,标志着容器技术正成为现代开发的标准工具。无论是简化开发环境配置、提升部署效率,还是实现 DevOps 流程自动化,Windows Docker 都提供了强大的解决方案。对于开发者而言,掌握这一工具不仅意味着提升个人技能,更是顺应行业趋势的关键步骤。随着云原生技术的普及,Docker 将继续在 Windows 生态中扮演核心角色,帮助团队构建更可靠、更高效的软件交付体系。
通过本文的逐步引导,读者可以掌握从安装到实际应用的完整流程。无论是搭建个人项目还是企业级服务,Windows Docker 都能提供灵活且一致的容器化体验。下一步,建议尝试将现有项目容器化,并探索 Kubernetes 等编排工具,进一步释放云原生技术的潜力。