windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像

1. 缘由

        由于几年前我刚开始接触docker这个东西就觉得是挺神奇挺好用挺奈斯的一个创造性产品,它的思想是:“以此构建,到处运行”,真的是很方便,给开发和运维带来了很大的便利性,同时也是极大地简化部署难度,同时也带来了很大的效率提升,屏蔽了部署环境的差异引发的开发、运维之间的相互吐槽和刷锅行为,提升团队迭代开发效率,同时让生产效率也大大提高了,俗话说:”兴趣是最好的老师”,所以作者就开始了docker的学习实践之路,我相信云原生是未来软件架构的方向和标配,也是大势所趋。

       刚开始由于不熟悉的情况下然后去各种查阅了一些资料,最后使用公司给我配置的docker电脑和我自己的电脑尝试从安装docker开始学习它,也踩了很多的坑看了大量的资料文档,付出一定的实践和尝试,之前就遇到一个很奇葩的问题,使用公司的电脑和自己的电脑安装docker一直无法使用打开还报了一个很奇葩的错误,后面还是没有得以解决,最后作者还在docker的github上提了一个bug,后面收到了回复,后面就没有管了,由于之前的这个bug就让我觉得在windows环境安装docker并使用确实是不好用,或许是当时的那个版本确实是有bug,自己的电脑的windows系统不兼容导致,所以本文使用的windows10版本


2. 准备工作

         2.1Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

         2.2升级wsl2

通常需要把wsl1升级到wsl2,查看wsl版本的命令 wsl -l -v,发现版本还是wsl1。下载链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

         2.3WSL是什么?

适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、好用的工具和应用程序),且不会产生传统虚拟机或双启动设置开销。


3. 环境配置准备

      3.1电脑环境配置:

  

   3.2查看当前win10版本是不是最新版,如果不是则升级到最新版

查看当前版本,win+r打开运行窗口输入"winver"

3.3进入“程序和功能”,确认对应功能已勾选

说明window10操作系统上安装docker需要开启虚拟化的支持

3.4查看虚拟化是否开启


4. 安装步骤

注意:请以管理员身份打开 PowerShell 工具并运行以下命令

使用 wsl -l -v命令查看本地所有可以用的Linux发行版本

   如果执行啥也没有就返回一个wsl的help的帮助使用打印说明你电脑上没有安装WSL支持的Linux发行版本,所以就必须去安装Linux发行版本


    4.1启用 WSL 2

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

     4.2启用“虚拟机平台”

要在 Windows 10上启用虚拟机平台,请以管理员身份打开 PowerShell 并运行:dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
要在 Windows 10上启用虚拟机平台,请以管理员身份打开 PowerShell 并运行:Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

    4.3设置 WSL 2 为默认值

  以管理员身份打开 PowerShell,然后运行以下命令以将 WSL 2 设置为 WSL 的默认版本:

wsl --set-default-version 2


  4.4安装 Linux 发行版

   安装Linux发行版本的方法用两种:

      4.4.1 windows的应用商店中

由于我的电脑是公司的台式机,所以由于网络问题,应用商店打不开,所以我才有下面的方式安装

4.4.2Windows10内置Linux子系统(WSL)镜像导入安装发行版系统

  参看:https://www.cnblogs.com/RainFate/p/15744830.html#_label0

    4.4.2.1获取发行版的tar文件:(这里以centos7.9为例子)  

# 拉取centos 镜像docker pull centos:centos7.9.2009# 创建容器,docker run  [imageId] # 列出所有容器找到centOS 的容器IDdocker ps -a# 导出容器生成tar文件docker export  -o  ./centos.tar   [containerId]

  4.4.2.2# PowerShell运行 

# 导入发行版到wsl,命令格式:wsl --import <DistroName> <InstallLocation> <InstallTarFile>wsl --import CentOS "D:\Program Files (x86)\Centos7" "F:\DownLoad\centos.tar"# 查看安装的wsl wsl -l -v# 启动并进入该系统wsl -d CentOS# 指定默认的发行版wsl -s CentOS# 关闭相关实例wsl --terminate CentOS# 卸载发行版wsl --unregister CentOS

4.4.2.3更新yum

yum update -y

4.4.2.4添加特定用户:略过---这里不配置默认使用root用户


 4.4.2.5启动发行版

wsl -d CentOS


4.5为安装的Linux发行版设置WSL的版本为2

wsl --set-version CentOS 2


5.安装Docker Desktop配置

注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!

电脑网络最好不要使用公司网络,因为公司网络有安全策略限制,否则Docker Desktop软件安装启动打开界面一直在卡着转圈圈,这就很尴尬,所以使用家庭网络或者使用自己手机开一个热点链接就可以出现如下界面:

资源配置:启用Linux发行版配置和开启wsl2的系统勾选上即可:

这里的选择Linux发行版的资源选择配置看上面----4.4安装 Linux 发行版,安装之后即可在这里选择到了

配置自己的阿里云镜像仓库地址:

参看:https://www.cjavapy.com/article/2089/

"registry-mirrors": [    "你自己的阿里云镜像加速地址"  ]

注意:如果你不配置这个加速地址上面使用docker拉取一个centOs7.9的镜像就会超时拉取不下来,docker安装的时候,不管是windo10安装docker还是在vm虚拟机上安装docker都要配置这个加速地址,你可以选择其它国内的加速地址,只要网络能通,可以拉取到就可以了,只是我觉得阿里云的这个好用,还有免费的个人docker镜像仓库可以使用,就很方便的,配置了这个配置方便我们pull一些docker镜像,不让由于网路问题拉取不到你想要的镜像而超时,或者你知道如何翻墙,这个另当别论。


6. 构建最小jre镜像和应用镜像

Win+R输入cmd以管理方式运行,事先准备好以下文件:

Dockerfile_jre1.8.0_271.txt:构建最小jre8镜像的dockerfile的文件

Dockerfile.txt:构建业务镜像含有最小jre8的镜像和skywaliking-agent探针的业务基础镜像可以在java微服务项目中直接引入,skywaliking-agent这个的使用请参看我的文章:

https://mp.weixin.qq.com/s/RrM-0P0bTY1yN5qlOGgUqw

5.1构建最小jre8

Dockerfile_jre1.8.0_271.txt内容如下:

执行:docker build -f Dockerfile_jre1.8.0_271.txt  -t zlf:jre8  . 

5.2构建业务基础镜像

Dockerfile.txt内容如下:

执行:docker build -f Dockerfile.txt -t zlf:jre8  .

上面两步骤执行结果:

可以将这个两个镜像推送到自己的阿里云镜像仓库

<think>嗯,用户的问题是关于在使用Docker运行IDEA开发环境时,是否需要在本机安装JDKMaven。我需要仔细分析这个问题,结合提供的引用资料来给出准确的回答。 首先,我得回忆一下Docker的基本概念。Docker容器是独立的环境,通常会把应用其依赖打包在一起。因此,理论上如果Docker镜像里已经包含了JDKMaven,那么本地可能不需要安装。但具体情况可能要看用户的实际使用场景。 接下来,看看用户提供的引用内容。引用[3]提到在WSL2环境中安装JDKMaven,因为IDEA需要开发环境的JDK,而JRE不支持。这里可能是指如果要在本地运行IDEA进行开发,本地还是需要JDK,因为IDE本身需要JDK来编译运行代码,而Docker容器可能只是用于部署或测试环境。但用户的问题是关于运行IDEA开发环境是否需要本地安装,这可能需要进一步澄清。 引用[2][4]讨论了Maven的配置,包括使用私服仓库配置pom.xml文件。如果使用Docker,可能这些配置会在容器内部处理,但如果在本地使用IDEA进行构建,可能需要本地安装Maven来执行这些任务,除非构建过程完全在Docker容器中进行。 引用[5]提到DockerIDEA集成时的端口问题,可能涉及到远程Docker守护进程的情况。如果开发是在本地IDEA中进行,但构建运行通过Docker容器,那么本地是否需要JDKMaven取决于构建步骤是否在容器内完成。 可能的结论是:如果所有开发、构建测试都在Docker容器内完成,本地可能不需要安装JDKMaven。但实际操作中,IDEA可能需要本地的JDK来支持IDE的功能,比如代码索引、自动补全等,即使构建过程是在Docker中进行的。而Maven如果用于本地构建,则需要安装,但若构建命令在容器内运行,则可能不需要。 需要分情况讨论。例如,如果使用Docker容器作为运行时环境,但开发工具(IDEA)在本地运行,可能需要本地JDK来支持IDE的功能。而Maven如果通过容器内的命令执行构建,则不需要本地安装,但如果在本地执行mvn命令,则需要。 可能还需要考虑是否使用Docker的远程构建或在本地构建后复制到镜像中。根据引用[2],使用Maven构建项目时可能需要指定配置文件,如果构建容器内完成,本地不需要,否则需要。 总结起来,用户的问题需要明确两种场景:1)完全在Docker容器内进行所有开发操作,此时可能不需要本地安装2)本地使用IDEA进行开发,但构建运行在Docker中,此时可能需要本地安装JDK供IDE使用,而Maven则取决于构建过程的位置。 此外,参考引用[3]中的内容,IDEA需要开发环境的JDK,所以即使使用Docker,本地安装JDK可能是必要的。而Maven如果使用容器内的实例,则不需要本地安装,但配置可能需要调整,比如在IDEA中设置Maven路径到容器内的位置,这可能比较复杂,所以更常见的是本地安装Maven,容器内进行构建。 因此,最终答案应该是:需要本地安装JDK,因为IDE依赖它;而Maven则根据构建方式决定,如果在容器内执行构建,则不需要本地安装,否则需要。</think>在使用Docker运行IDEA开发环境时,本地是否需要安装JDKMaven取决于具体场景: ### 一、本地JDK的必要性 1. **IDE基础依赖** IDEA作为Java集成开发环境,需要本地JDK支持核心功能(如代码解析、调试、自动补全等)。即使通过Docker容器运行项目,IDEA仍需调用本地JDK实现开发环境的基础功能[^3]。 2. **编译与调试** 若需在本地直接编译代码或运行单元测试(不依赖容器),则必须安装JDK。例如,IDEA的即时编译功能(如`Build Project`)依赖本地JDK环境。 ### 二、本地Maven的依赖条件 1. **构建方式决定需求** - **容器构建**:若通过Dockerfile定义`mvn package`命令(在容器内执行Maven构建),则本地无需安装Maven。例如: ```dockerfile FROM maven:3.8.6 COPY . /app WORKDIR /app RUN mvn clean package ``` - **本地构建**:若在IDEA中直接执行`mvn install`命令生成Jar包后再打包镜像,则需本地安装Maven配置环境变量[^2][^4]。 2. **私服仓库配置** 若项目依赖私有Maven仓库,需在本地`settings.xml`中配置认证信息,否则容器构建可能因权限问题失败。 ### 三、推荐配置方案 | 组件 | 必须安装场景 | 可省略场景 | |---------|---------------------------|-------------------------------| | JDK | IDEA功能支持、本地编译调试 | 仅通过容器完成所有构建运行 | | Maven | 本地执行Maven命令 | 容器内完成构建不涉及本地调试 | ### 四、操作建议 - **最小安装**:本地保留JDK,Maven仅用于特殊调试场景 - **容器构建**:在Dockerfile中集成Maven构建步骤,减少本地依赖 - **IDE配置**:在IDEA中设置Docker工具链,将构建命令委托给容器[^5]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值