当前位置: 首页 > article >正文

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 可以大大简化配置和管理工作。

相关文章:

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 下载Ubuntu2.2.2 迁移位置 3.Ubuntu子系统搭建docker环境3.1安装do…...

ImgTool_0.8.0:图片漂白去底处理优化工具

ImgTool_0.8.0 是一款专为Windows设计的‌免费、绿色便携式图片处理工具‌&#xff0c;支持 Windows 7/8/10/11 系统‌。其核心功能为‌漂白去底‌&#xff0c;可高效去除扫描件或手机拍摄图片中的泛黄、灰底及阴影&#xff0c;同时提供智能纠偏、透视校正等辅助功能&#xff0…...

BGP路由协议之对等体

IGP 可以通过组播报文发现直连链路上的邻居&#xff0c;而 BGP 是通过 TCP&#xff1a;179 来实现的。BGP 需要手工的方式去配置邻居。不需要直连&#xff0c;只要路由能通就可以建立邻居 IBGP 与 EBGP IBGP :(Internal BGP) :位于相同自治系统的 BGP 路由器之间的 BGP 邻接关…...

Python代码相关关系矩阵的三种展示热力图-条形图

本文将深入探讨三种常用的展示技巧:corr()函数、热力图和条形图。通过这些技术,可以更直观地理解数据中的关联性,为进一步的分析和决策提供有力支持。 一、corr()函数:基础相关性分析 1. corr()函数的基本用法 corr()函数是Pandas库中用于计算数据帧(DataFrame)中两两…...

esp32cam远程图传:AI Thinker ESP32-CAM -》 服务器公网 | 服务器 -》 电脑显示

用AI Thinker ESP32-CAM板子访问公网ip的5112端口并上传你的摄像头拍摄的图像视频数据&#xff0c;并写一段python程序打开弹窗接受图像实现超远程图像传输教程免费 1. 首先你要有一个公网ip也就是去买一台拥有公网的服务器电脑&#xff0c;我买的是腾讯云1年38元的服务器还可…...

CSI-PVController-claimWorker

claimWorker() claim worker中循环执行workFunc() claim worker从claimQueue中取数据&#xff0c;也就是取出的都是PVCworkFunc首先从队列中取出一个obj&#xff0c;然后拿name去informer缓存中尝试获取 如果在informer缓存。说明不是删除事件&#xff0c;执行updateClaim()函…...

【家政平台开发(40)】功能测试全解析:从执行到报告撰写

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

[特殊字符] 第十七讲 | 随机森林:变量重要性识别与建模实战

📌 关键词:随机森林、变量重要性、建模、分类、回归、R语言、可解释性 🎯 一、随机森林到底是什么? 随机森林(Random Forest)是由 Breiman 于 2001 年提出的集成学习方法,本质是由多个决策树模型组成的“森林”,通过投票或平均的方式提高预测精度和泛化能力。 ✅ 支…...

AIDD-人工智能药物-pyecharts-gallery

给大家安利一个NSC期刊级别的图-pyecharts-gallery 网址 https://gallery.pyecharts.org pyecharts-gallery 英文文档在这 - English Introduction is Here 项目简介 项目基于 pyecharts 2.0.3 版本进行展示Apache ECharts (incubating) 官方实例 项目须知 项目代码结构…...

ARM裸机开发——交叉编译器

交叉编译器&#xff1a; 下载&#xff1a; 链接&#xff1a; https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/ 根据核心板的单片机架构进行下载 解压&#xff1a; 首先交叉编译器的压缩包先下载到家目录下的某一个目录中&am…...

WPF轮播图动画交互 动画缩放展示图片

WPF轮播图动画交互 动画缩放展示图片 效果如下图&#xff1a; XAML代码&#xff1a; <Window x:Class"Caroursel.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/20…...

开启深度学习之旅

深度学习作为人工智能领域最激动人心的分支之一&#xff0c;正在改变我们与科技互动的方式。本文将为您提供深度学习的入门指南&#xff0c;帮助您踏上这一充满可能性的旅程。 一、深度学习基础概念 深度学习是机器学习的一个子集&#xff0c;它使用多层神经网络来模拟人脑的…...

TDengine 语言连接器(Go)

简介 driver-go 是 TDengine 的官方 Go 语言连接器&#xff0c;实现了 Go 语言 database/sql 包的接口。Go 开发人员可以通过它开发存取 TDengine 集群数据的应用软件。 Go 版本兼容性 支持 Go 1.14 及以上版本。 支持的平台 原生连接支持的平台和 TDengine 客户端驱动支持…...

【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解

目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 是什么 2.2 Langchain4j 主要特点 2.3 Langchain4j 核心组件 2.4 Langchain4j 核心优势 三、Langchanin4j组件应用实战 3.1 前置准备 3.1.1 导入如下依赖 3.1.2 获取apikey 3.1.3 获取官方文档 3.2 聊天组件 3.…...

汉化进度100%

P3834 #include<bits/stdc.h> #define int long long #define 定义整型变量 int #define 这是一个常量 const #define 无返回值函数 void #define 这是一个循环条件在后面 for #define 定义结构体 struct #define 如果 if #define 否则 else #define 定义无返回值的 sig…...

最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu)

最新如何在服务器中解决FFmpeg下载、安装和配置问题教程&#xff08;Linux&#xff5c;Windows&#xff5c;Mac&#xff5c;Ubuntu&#xff09; 摘要&#xff1a; FFmpeg是一个强大的开源工具&#xff0c;广泛应用于音视频处理&#xff0c;支持格式转换、视频剪辑、流媒体推送…...

Tkinter图像和多媒体处理

Tkinter不仅支持图形界面的构建,还能处理图像和多媒体内容。通过Canvas控件、PIL(Python Imaging Library)库和tkinter的内置功能,您可以在Tkinter应用中展示图像、处理图像并播放简单的多媒体内容。掌握这些技术可以帮助您创建更丰富的图形界面。 10.1 显示图像 Tkinter…...

【C语言】结构体 (深入)

前言&#xff1a; 在上一张讲解了结构体的基本知识&#xff0c;在本章深入讲解一下结构体。 如内存对齐&#xff0c;传参&#xff0c;实现尾段。 首先提一个问题吧&#xff0c;如下的代码结果输出是多少&#xff1f; #include <stdio.h> struct s1 {char name;int id…...

苍穹外卖day03

店铺状态接口 引入Redis&#xff0c;因为像存储店铺状态这种只有一个字段&#xff08;没必要存储在数据库&#xff09;&#xff0c;且登录后台就要被访问的数据&#xff08;加快查询速度&#xff0c;减少数据库压力&#xff09; 使用步骤&#xff1a;导入相关maven依赖、配置…...

文件流---------获取文件的内容到控制台

总流程&#xff1a;先创建一个文本文件------->里面写入一些内容&#xff08;纯字母和字母加文字&#xff09;-----------> 然后通过输入流获取文件里面的内容&#xff0c;两种方式。 1.第一种&#xff0c;获取单个的字符 &#xff0c;先创建文件 &#xff0c;java.txt…...

【PyTorch项目实战】反卷积(Deconvolution)

文章目录 一、卷积&#xff08;Convolution&#xff09;二、反卷积&#xff08;Deconvolution&#xff09; —— 又称去卷积1. 反卷积&#xff08;Richardson-Lucy&#xff0c;RL&#xff09; —— —— 通过不断迭代更新图像估计值2. 转置卷积&#xff08;Transpose Convoluti…...

SpringBoot无法访问静态资源文件CSS、Js问题

在做一个关于基于IDEASpringBootMaveThymeleaf的系统实现实验时候遇到了这个问题一直无法解决 后来看到一篇博客终于解决了。 springboot项目在自动生成的时候会有两个文件夹&#xff0c;一个是static,一个是templates&#xff0c;如果我们使用 <dependency><groupI…...

powerbi制作中国式复杂报表

今天主要想实现的功能是使用powerbi制作一个中国式的复杂报表&#xff0c;其中需要多表头&#xff0c;另外需要多个度量值如图我们最终要实现的样式是这样的&#xff1a; 错误示范 因为这些作为多表头的维度需要在同一行上作为不同的列显示所以他们需要来自于同一个字段&#…...

CMake中set_property接口及属性作用详解

在 CMake 中&#xff0c;set_property 是一个用于设置 属性&#xff08;Property&#xff09; 的核心命令。属性是 CMake 中用于控制构建过程的核心机制之一&#xff0c;可以理解为与特定对象&#xff08;如目标、目录、源文件等&#xff09;关联的键值对&#xff0c;用于存储配…...

设计模式——抽象工厂模式总结

理解了前面的工厂模式后&#xff0c;再理解抽象工厂模式就很容易了。 工厂模式&#xff1a;https://blog.csdn.net/inside802/article/details/147170118?spm1011.2415.3001.10575&sharefrommp_manage_link 抽象工厂模式就是工厂模式的更加抽象化&#xff0c;父类不仅不承…...

ChatGPT-如何让AI写作不那么生硬!

在使用聊天机器人撰写文章时&#xff0c;可能会遇到频繁使用“首先”、“其次”、“再次”等转折连接词&#xff0c;这会让文章显得呆板和机械&#xff0c;降低了阅读体验。 解决这个问题可以尝试以下方式&#xff01; 多样化连接词&#xff1a; 使用更多多样的连接词和过渡短…...

禁止页面滚动的方法-微信小程序

在微信小程序中&#xff0c;有几种方法可以禁止页面滚动&#xff1a; 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置&#xff0c;此方法完全禁止页面的滚动行为&#xff1a; {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…...

C++——继承、权限对继承的影响

目录 继承基本概念 编程示例 1.基类&#xff08;父类&#xff09;Person 代码特点说明 权限对类的影响 ​编辑 编程示例 1. 公有继承 (public inheritance) 2. 保护继承 (protected inheritance) 3. 私有继承 (private inheritance) 重要规则 实际应用 继承基本概…...

js中 剩余运算符(Rest Operator )(...)和展开运算符(Spread Operator)(...)的区别及用法

1、基本说明 在JavaScript中&#xff0c;剩余运算符&#xff08;Rest Operator&#xff09;和展开运算符&#xff08;Spread Operator&#xff09;虽然在某些方面有相似之处&#xff0c;但它们各自有不同的用途和功能。下面详细解释这两种运算符的区别&#xff1a; 1.1. 剩余…...

雅思练习总结(二十六)

雅思练习总结(二十六) 本文章是雅思练习总结(二十六),总结了文章《MAKING EVERYDROP COUNT》,内容包括原文精翻,文章脉络总结,单词扩展学习3个部分 1 文章原文及翻译 MAKING EVERYDROP COUNT 翻译:让每一滴水,都充满价值 A The history of human civilisation i…...