windows docker(超详细)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 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 和容器功能。通过以下步骤启用:

  1. 打开 控制面板 > 程序 > 启用或关闭 Windows 功能
  2. 勾选 Hyper-VContainers,重启电脑。

安装 Docker Desktop

  1. 访问 Docker 官方网站 ,下载 Windows 版本。
  2. 安装过程中选择 Windows Linux Dual Mode(支持同时运行两种容器)。
  3. 首次启动时,根据提示登录 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 等编排工具,进一步释放云原生技术的潜力。

最新发布