windows中搭建Ubuntu子系统

windows中搭建虚拟环境

  • 1.配置
  • 2.windows中搭建Ubuntu子系统
    • 2.1windows配置
      • 2.1.1 确认启用私有化
      • 2.1.2 将wsl2设置为默认版本
      • 2.1.3 确认开启相关配置
      • 2.1.4重启windows以加载更改配置
    • 2.2 搭建Ubuntu子系统
      • 2.2.1 下载Ubuntu
      • 2.2.2 迁移位置
  • 3.Ubuntu子系统搭建docker环境
    • 3.1安装docker与docker-compose
    • 3.2docker与docker-compose的区别
      • 3.2.1 Docker作用:
      • 3.2.2Docker Compose作用:
      • 3.2.3 区别

1.配置

环境:

  1. 13th Gen Intel® Core™ i7-13700H 2.40 GHz;
  2. Windows 11 家庭中文版 64 位操作系统, 基于 x64 的处理器

子系统信息:

  1. Ubuntu 22.04 LTS
  2. docker

2.windows中搭建Ubuntu子系统

由于在开发中,存在部分服务不适配windows,为了更好的接近系统运行的真实环境,故在windows中搭建Ubuntu子系统

2.1windows配置

在 Windows 系统上运行 Linux 发行版。WSL 提供了一个与传统的 Linux 环境类似的操作体验,使得在 Windows 上进行开发和运行 Linux 应用程序变得更加便捷。windows11,默认已有wsl2

2.1.1 确认启用私有化

在windows的任务管理器中查看
在这里插入图片描述

2.1.2 将wsl2设置为默认版本

在windows的powershell中执行

wsl --set-default-version 2

2.1.3 确认开启相关配置

在windows菜单中搜索“启用或关闭windows功能”进行勾选红色框部分即可
在这里插入图片描述

2.1.4重启windows以加载更改配置

2.2 搭建Ubuntu子系统

2.2.1 下载Ubuntu

  1. 通过windows的商店搜索下载
  2. 下载依赖地址
    下载依赖地址中有详细描述,下载到本地即可;
    在这里插入图片描述
    点击.appxbundle文件安装,等待完成即可;初次启动,可能需要输出虚拟机的账号密码,根据提示设置即可;
    在powershell执行
wsl -l -v

能够看到版本:

(base) PS C:\Users\chenyushan> wsl -l -vNAME      STATE           VERSION
* Ubuntu    Stopped         2
(base) PS C:\Users\chenyushan>

2.2.2 迁移位置

  1. 上述安装,默认情况下,WSL 2 使用一个虚拟硬盘(VHD)来存储文件;存储在 Windows 用户目录下,路径类似于:
C:\Users\<YourUsername>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_<version>\LocalState\ext4.vhdx
  1. 运行以下命令来导出当前的 Ubuntu 发行版:
# 将当前的 Ubuntu 发行版导出为一个 tar 文件。
wsl --export Ubuntu D:\IT-SOFT\Ubuntu\Ubuntu.tar
  1. 注销当前的 WSL 发行版
# 可以理解为移除当前安装的Ubuntu
wsl --unregister Ubuntu
  1. 导入 WSL 发行版到指定的位置
# 第一个地址是目标位置,第二个地址导出的发行版
# 将 Ubuntu 发行版重新安装到 D 盘的 D:\IT-SOFT\Ubuntu\Ubuntu2204 目录中。
wsl --import Ubuntu D:\IT-SOFT\Ubuntu\Ubuntu2204 D:\IT-SOFT\Ubuntu\Ubuntu.tar
  1. 查看状态
wsl -l -v

7.启动虚拟环境

# 有多重WSL发行版安装的情况非常有用 指定启动的版本名称“Ubuntu”
wsl -d Ubuntu
#直接在当前的命令行窗口(PowerShell或命令提示符)中启动默认的WSL发行版
wsl

3.Ubuntu子系统搭建docker环境

3.1安装docker与docker-compose

  1. 首先进入Ubuntu环境,更新apt包索引(同步软件源列表、获取最新信息):
sudo apt-get update
  1. 卸载可能存在的旧版本
apt-get remove docker docker-engine docker-ce docker.io 
  1. 允许APT通过HTTPS协议来访问存储库
    使得APT包管理器能够通过HTTPS协议与外部存储库进行通信
apt-get install -y apt-transport-https ca-certificates curl software-properties-common 
  1. 添加Docker官方GPG密钥:
    命令使用curl下载Docker官方的GPG密钥,并通过apt-key add -将其添加到系统的密钥环中。这样做是为了确保后续从Docker存储库下载的软件包是经过Docker官方认证的,防止中间人攻击:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加Docker的APT存储库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  1. 安装docker
    简介:
    docker-ce: 这是Docker社区版的引擎,它是Docker的核心部分,提供了容器运行、镜像管理等功能。
    docker-ce-cli: 这是Docker的命令行工具(CLI),它允许用户通过命令行与Docker守护进程进行交互。即使没有这个包,只要docker-ce已经安装并且正在运行,也可以使用其他方式(如REST API)与之交互,但是CLI工具是最常用的与Docker通信的方法。
    containerd.io: 这是containerd的二进制文件,它是Docker使用的容器运行时,负责管理容器的生命周期。虽然docker-ce包含了对containerd的依赖,但明确地安装containerd.io可以确保你获得最新版本的containerd,而不是依赖于Docker包中所指定的版本。
#  简单的安装,自动配置相关版本
apt-get install docker-ce
# 指定安装相关依赖和版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 安装docker-compose命令:
sudo apt-get install docker-compose

3.2docker与docker-compose的区别

3.2.1 Docker作用:

容器化应用: Docker 允许开发者将应用程序及其所有依赖项打包到一个称为容器的独立单元中。这确保了应用程序可以在任何环境中一致地运行。
镜像管理: Docker 提供了创建、管理和分发这些容器镜像的能力。镜像是容器的基础模板,可以用来创建容器实例。
容器生命周期管理: 使用 Docker,你可以启动、停止、重启、删除容器等操作,并且可以为容器设置资源限制(如 CPU 和内存)。
网络与存储: Docker 支持容器间的网络通信以及数据卷的管理,使得容器能够共享数据或持久化存储。

3.2.2Docker Compose作用:

多容器应用编排: Docker Compose 是专门设计来定义和运行多容器 Docker 应用程序的工具。它允许你使用一个 YAML 文件(通常是 docker-compose.yml)来配置应用的服务、网络和卷等方面。
服务管理: 通过 Docker Compose,你可以定义多个服务(即容器),并指定每个服务使用的镜像、端口映射、环境变量、卷挂载等。Compose 还支持定义服务之间的依赖关系,以确保正确的启动顺序。
简化部署流程: 使用简单的命令(如 docker-compose up 和 docker-compose down),就可以启动或停止整个应用程序的所有服务,极大地简化了多容器应用的管理。
环境一致性: 确保开发、测试和生产环境之间的一致性,减少因环境差异导致的问题。

3.2.3 区别

单一 vs 多容器:
Docker 主要用于单个容器的应用场景。
Docker Compose 则针对需要同时运行多个相互关联容器的应用程序,例如 Web 服务器加上数据库和缓存服务。
命令行 vs YAML 文件:
Docker 使用命令行参数和 Dockerfile 来定义和构建容器。
Docker Compose 使用 YAML 格式的文件来描述应用架构和服务配置。
复杂度:
对于较简单的应用场景,直接使用 Docker 命令可能更加直接。
当涉及到复杂的多服务架构时,Docker Compose 可以大大简化配置和管理工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL事务机制

目录 原子性 持久性 隔离性 隔离级别(并发事务之间的关系) 读未提交 读已提交 可重复读 串行化(最严格的隔离级别) 一致性 问题 不可重复读性(已经提交的数据) 什么是脏读问题(未提交的数据)? 幻读 保存点 自动提交机制--autocommit 会话隔离级别与全局隔离级…

Cadence学习笔记之---直插元件的封装制作

目录 01 | 引 言 02 | 环境描述 03 | 操作步骤 04 | 结 语 01 | 引 言 在之前发布的Cadence小记中&#xff0c;已经讲述了怎样制作热风焊盘&#xff0c;贴片(SMD)焊盘、通孔、过孔&#xff0c;以及贴片元件的封装。 本篇关于Cadence的小记主要讲如何制作直插元件的封装。 …

【第四十周】文献阅读:用于检索-增强大语言模型的查询与重写

目录 摘要Abstract用于检索-增强大语言模型的查询与重写研究背景方法论基于冻结LLM的重写方案基于可训练重写器的方案重写器预热训练&#xff08;Rewriter Warm-up&#xff09;强化学习&#xff08;Reinforcement Learning&#xff09; 创新性实验结果局限性总结 摘要 这篇论文…

java学习总结(if switch for)

一.基本结构 1.单分支if int num 10; if (num > 5) {System.out.println("num 大于 5"); } 2.双分支if-else int score 60; if (score > 60) {System.out.println("及格"); } else {System.out.println("不及格"); } 3.多分支 int…

yum的基本操作和vim指令

在我们的手机端或者Windows上下载软件&#xff0c;可以在相应的应用商店或者官网进行下载&#xff0c;这样对于用户来说十分的方便和便捷。而在Linux上&#xff0c;也有类似的安装方式&#xff0c;我们来一一了解一下。 Linux安装软件的3种方法 源代码安装 在Linux下安装软件…

C++ CUDA开发入门

CUDA开发笔记 文章目录 CUDA开发笔记[toc]1 概述2 环境3 命令行编译4 CMAKE引入CUDA5 vscode开发CUDA6 Qt中使用CUDA-CMake7 QMake配置CUDA8 核函数9 核函数调用9.1 核函数调用语法9.2 执行配置参数详解9.3 关键调用步骤9.4 重要注意事项9.5 调用示例分析9.6 最佳实践建议 10 线…

llm开发框架新秀

原文链接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google开源ADK-Agent Development Kit 开源的、代码优先的 Python 工具包&#xff0c;用于构建、评估和部署具有灵活性和控制力的复杂智能体项目仓库:https://github.com/google/adk-python 2.6k项目文档:Age…

VM——相机拍照失败

1、问题&#xff1a;相机频闪触发&#xff0c;在MVS中正常出图&#xff0c;在VM中出现拍照失败 2、解决&#xff1a; 1、首先排查网络设置&#xff08;巨帧是否设置&#xff09; 2、电脑的所有防火墙是否关闭 3、在MVS中恢复相机的设置参数为默认参数&#xff0c;删除VM中的全…

【时频谱分析】小波分析

算法配置页面&#xff0c;也可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

怎么免费下载GLTF/GLB格式模型文件,还可以在线编辑修改

​ 现在非常流行glb格式模型&#xff0c;和gltf格式文件&#xff0c;可是之类模型网站非常非常少 1&#xff0c;咱们先直接打开http://glbxz.com 官方glb下载网站 glbxz.com 2 可以搜索&#xff0c;自己想要的模型关键词 3&#xff0c;到自己想下载素材页面 4&#xff0c;…

【6】深入学习http模块(万字)-Nodejs开发入门

深入学习http模块 前言http一个Web服务器项目创建代码运行代码解析 Server属性&#xff1a;keepAlive属性&#xff1a;keepAliveTimeout属性&#xff1a;maxHeaderSize属性&#xff1a;requestTimeout属性&#xff1a;maxRequestsPerSocket方法&#xff1a;close()方法&#xf…

buuctf sql注入类练习

BUU SQL COURSE 1 1 实例无法访问 / Instance cant be reached at that time | BUUCTF但是这个地方很迷惑就是这个 一个 # 我们不抓包就不知道这个是sql注入类的判断是 get 类型的sql注入直接使用sqlmap我们放入到1.txt中 目的是 优先检测 ?id1>python3 sqlmap.py -r 1.t…

(即插即用模块-特征处理部分) 三十二、(TGRS 2024) MDAF 多尺度双表示对齐过滤器

文章目录 1、Multiscale Dual-Representation Alignment Filter2、代码实现 paper&#xff1a;SFFNet: A Wavelet-Based Spatial and Frequency Domain Fusion Network for Remote Sensing Segmentation Code&#xff1a;https://github.com/yysdck/SFFNet 1、Multiscale Dual-…

Python 中为什么 hash(-1) == hash(-2)?

推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 让我们从哪里开始?获取源代码!让我们浏览一下这是正确/完整的答案吗?结论前几天在浏览 Reddit 时,我在 r/Python 上看到了这样一个…

基于PySide6与pycatia的CATIA绘图比例智能调节工具开发全解析

引言&#xff1a;工程图纸自动化处理的技术革新 在机械设计领域&#xff0c;CATIA图纸的比例调整是高频且重复性极强的操作。传统手动调整方式效率低下且易出错。本文基于PySide6pycatia技术栈&#xff0c;提出一种支持智能比例匹配、实时视图控制、异常自处理的图纸批处理方案…

macos下 ragflow二次开发环境搭建

参考官网链接 https://ragflow.io/docs/dev/launch_ragflow_from_source虚拟环境 git clone https://github.com/infiniflow/ragflow.git cd ragflow/ # if not pipx, please install it at first pip3 install pipxpipx install uv uv sync --python 3.10 --all-extras 安装 …

libva之ffavdemo分析

ffavdemo 代码库实现了一个基于FFmpeg和VAAPI的硬件加速视频解码与渲染框架&#xff0c;主要用于演示视频解码与渲染的完整硬件加速流程。支持多种渲染后端&#xff08;X11、DRM、EGL&#xff09;&#xff0c;适应不同显示环境。包含视频处理过滤器&#xff0c;可进行格式转换和…

JavaWeb 课堂笔记 —— 09 MySQL 概述 + DDL

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…

精品推荐 | 湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)

精品推荐&#xff0c;湖仓一体电商数据分析平台实践教程合集&#xff0c;包含视频教程、设计文档及完整项目代码等资料&#xff0c;供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与数…

【人工智能】大语言模型多义词解析技术揭秘——以“项目“歧义消解为例

今天田辛老师和小伙伴探讨了一个有趣的多义词问题&#xff0c; 在人工智能技术日新月异的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;对自然语言的理解能力已经达到令人惊叹的水平。大模型到底是如何去区分多义词的&#xff1f; 比如&#xff1a;当用户提到"…