Windows系统Docker的安装配置、使用教程
PS:博主使用win11系统
一、前置配置
Docker在Windows系统中存在两种独立的运行模式,需根据自身系统版本和使用需求先选择对应模式,再执行后续安装步骤。
两种模式不可同时启用,具体适配信息如下:
| 运行模式 | 依赖组件 | 适用系统版本 | 核心优势 |
| wsl2模式 | WSL 2 + Hyper-V底层监控程序 | Win10/Win11 家庭版、专业版、企业版 | 1. 资源占用低(仅数百MB内存) 2. 启动速度快(1-3分钟) 3. 兼容VMware 16.0+等虚拟机工具 |
| Hyper-V模式 | 完整Hyper-V功能 | Win10/Win11 专业版、企业版 | 1. 支持与Hyper-V虚拟机联动 2. 系统级虚拟化稳定性强 |
家庭版系统仅支持WSL 2模式;专业版/企业版优先推荐WSL 2模式,仅在需要Hyper-V联动时选择Hyper-V模式。
二、通用前置准备(两种模式均需完成)
2.1 开启CPU虚拟化
检查CPU是否开启虚拟化

若没用启用,如何启用?
1.关闭电脑,然后打开它并进入 BIOS 界面。通常需要按下 DEL、F1、F2 或 F10 键来进入 BIOS 界面(具体按键可能因计算机品牌和型号而有所不同,请根据自己的电脑手册进行确认)。
笔记本一般来说是F2
2.在 BIOS 设置界面中,切换到“高级菜单”或类似命名的选项卡,然后寻找“CPU 配置”或“芯片组配置”等相关设置。
3.找到“虚拟化技术”,这个选项可能命名为 VT-x、AMD-V 或者 Intel Virtualization Technology 等,选择它并将其设置为“启用”。
4.确认更改并保存 BIOS 设置。不同计算机品牌或型号可能执行此操作的方式略有不同,一般情况下可以在相应选项卡下使用“Save and Exit”或类似选项来保存修改并退出 BIOS 界面。
5.最后重新启动计算机,使得新的BIOS设置生效。
2.2 开启Hyper-V底层监控程序
以管理员方式运行 Windows PowerShell,输入 bcdedit,即可查看

如果没有“hypervisorlaunchtype”这个属性或者值不是Auto,则需要输入下面命令,再进行电脑重启。
bcdedit /set hypervisorlaunchtype auto
记住执行以后,要生效得重启电脑
三、WSL 2模式安装流程(通用版)
3.1 开启WSL 2相关Windows功能
1.按Win+R键,输入“optionalfeatures”并回车,打开“Windows功能”窗口,勾选以下功能

2.点击“确定”,等待功能安装完成后重启电脑
3.2 安装WSL 2子系统
1.以管理员身份运行PowerShell,执行安装命令:
wsl --install该命令会自动安装默认Linux发行版(通常为Ubuntu)
2.版本验证:重启后执行以下命令,确认WSL版本为2:
wsl --status若显示版本为1,执行升级命令:wsl --update
二、安装配置Docker
1.下载安装包,在Docker官网下载最新的安装包(https://www.docker.com/products/docker-desktop/)

2.右键管理员运行下载的安装程序,,勾选上关键选项(Use WSL 2 instead of Hyper-V)

3.点击“OK”完成安装,安装后重启电脑。
3.4 安装验证
1.启动Docker Desktop:双击桌面快捷方式,首次启动可选择“Skip”跳过登录,等待系统托盘图标显示“Docker Desktop running”;
2.命令行验证:打开PowerShell或CMD,执行以下命令:
//查看Docker版本
docker --version
输出版本即为成功
3.运行测试容器:
docker run hello-world
若输出“Hello from Docker!”,说明安装成功。
3.5 与VMware兼容性配置
WSL 2模式与VMware 16.0+版本可直接共存,无需额外配置;
若使用VMware 15.x及以下版本,需升级至16.0+版本,否则会出现虚拟化冲突。
使用指南
1.镜像
1.拉取镜像
拉取镜像就相当于下载程序,比如你要是用Tomcat启动程序那么你就要先去下载Tomcat程序。
拉取命令
docker pull <镜像名称>
#示例
docker pull tomcat
如果对需要的镜像有特殊要求,如版本等可以加上版本号
#如拉取Tomcat9
docker pull tomcat:9
#或者需要更具体的版本
docker pull tomcat:7.0.109-jdk8-openjdk
2.构建镜像
构建镜像是将自己的项目构建为自定义镜像方便放置在Docker中运行,这样的好处是能够极大程度的提高安全性
构建镜像需要准备你的程序(这里是打成了war包)、Dockerfile文件、数据库驱动(如果程序中不包含就需要在这里放置,如果程序中有就不用了),目录结构如下:
your-project/
├── myapp.war
├── Dockerfile
└── 数据库驱动
构建命令
上面创建的项目目录(your-project)输入cmd进入命令行,输入以下命令进行自定义镜像构建
docker build -t <自定义镜像名> .
#示例
docker build -t myapp . #注意这个“.”不能漏掉,他代表构建的是你当前目录的项目
Dockerfile示例:
# 使用 Tomcat 7 + JDK8(兼容 Oracle 11g)
FROM tomcat:7.0.109-jdk8-openjdk
# 设置时区(关键!)
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
# 删除默认 ROOT(可选,避免冲突)
RUN rm -rf /usr/local/tomcat/webapps/ROOT
# 添加 Oracle JDBC 驱动
COPY ojdbc8.jar /usr/local/tomcat/lib/
# 部署应用为 nfdc.war → 自动映射到上下文路径 /nfdc
COPY jweb_fdc.war /usr/local/tomcat/webapps/nfdc.war
EXPOSE 8080
CMD ["catalina.sh", "run"]
镜像命令总结
搜索:docker search '镜像名'[:指定版本]
拉取:docker pull '镜像名'[:指定版本]
删除:docker rmi '镜像名'[:指定版本]
查看本地镜像:docker images/docker image ls
镜像历史:docker history '镜像名'
2.容器
启动容器
1.在Docker desktop图形界面启动



2.docker-compose启动
因为在Docker中的容器都是独立的,如果有需要容器中通信的就推荐使用docker-compose模式启动,这样可以指定将不同的容器在同一个网络中运行实现容器间的通信
自定义网络命令
docker network create <自定义网络名称>
#示例
docker network create myapp-network
启动命令
# -d表示后台运行
docker-compose up -d
使用该模式启动需要先保证应用镜像已经构建。
下面以nginx代理Tomcat启动端口为例,需要创建单独的文件夹(推荐)在文件夹中需要创建nginx.conf、docker-compose.yml两个文件,nginx.conf是nginx的配置文件这里使用外部挂载可以实现便捷修改配置,docker-compose.yml为docker-compose模式启动的配置文件,文件结构如下:
your-project/
├── docker-compose.yml
└── nginx.conf
docker-compose.yml文件内容示例
version: '3.8'
services:
fdc-app:
image: myapp #自定义构建的镜像名称,就是前面提到的项目构建的镜像
container_name: myapp #给容器自定义的名字
networks: # 加入自定义网络,是nginx能代理端口的关键
- myapp-network #自定义网络名称
nginx-proxy:
image: nginx # 轻量版 nginx
container_name: nginx-myapp
ports:
- "28080:80" # 将宿主机 28080 端口映射到 nginx 容器 80 端口
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro # 只读挂载
networks:
- myapp-network
depends_on:
- myapp #容器启动顺序
networks:
myapp-network:
external: true # 使用你已创建的外部网络
容器命令总结
启动:docker run '镜像名'
后台启动:-d
端口映射:-p '本地端口':'容器端口',👉port即端口
查看正在运行容器:docker ps
查看所有容器:docker ps -a
运行容器:docker start '容器别名'|'容器ID'
停止正在运行容器:docker stop '容器别名'|'容器ID'
重启容器:docker restart '容器别名'|'容器ID'
删除容器:docker rm [-f] '容器别名'|'容器ID'
删除多个容器:docker rm [ID1] [ID2] [ID...]
容器状态:docker stats '容器别名'|'容器ID'
容器日志:docker logs '容器名'|'容器ID'
更多推荐
所有评论(0)