windows中搭建Ubuntu子系统

news2025/4/15 19:09:53

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 -v
  NAME      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.coloradmin.cn/o/2334436.html

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

相关文章

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 邻接关…

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

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

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…

【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.…

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

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

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

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

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

总流程&#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; 错误示范 因为这些作为多表头的维度需要在同一行上作为不同的列显示所以他们需要来自于同一个字段&#…

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

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

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. 剩余…

华为手机清理大数据的方法

清理手机最大的问题是&#xff0c;手动和自动清理了多次&#xff0c;花费了很长时间&#xff0c;但是只腾挪出来了一点点空间&#xff0c;还是有很大空间无法使用&#xff0c;这篇文章就告诉你怎样做&#xff0c;以花瓣剪辑为例&#xff0c;如下&#xff1a; 删除数据&#xff…

单元测试原则之——不要过度模拟

什么是过度模拟? 过度模拟(over-mocking)是指在单元测试中,模拟了太多依赖项,甚至模拟了本不需要模拟的简单对象或行为。过度模拟会导致: 测试代码变得复杂,难以阅读和维护。测试逻辑偏离了实际业务逻辑,无法验证真实代码的行为。忽略了被测单元与依赖项之间的真实交互…

操作系统基础:07 我们的任务

课程回顾与后续规划 上节课我们探讨了操作系统的历史。了解历史能让我们明智&#xff0c;从操作系统的发展历程中&#xff0c;我们总结出两个核心的里程碑式图像&#xff1a;多进程&#xff08;多任务切换&#xff09;图像和文件操作图像 。Unix和Windows等系统的成功&#xf…

微服务的服务调用详解以及常见解决方案对比

微服务服务调用详解 1. 服务调用分类 服务调用根据通信方式、同步性、实现模式可分为以下类型&#xff1a; 按通信协议分类 类型典型协议/框架特点RPC&#xff08;远程过程调用&#xff09;Dubbo、gRPC、Apache Thrift高性能、二进制协议、强类型定义HTTP/RESTSpring RestTe…