windows中搭建Ubuntu子系统

windows中搭建虚拟环境

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中执行

bash 复制代码
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执行
bash 复制代码
wsl -l -v

能够看到版本:

powershell 复制代码
(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 用户目录下,路径类似于:
bash 复制代码
C:\Users\<YourUsername>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_<version>\LocalState\ext4.vhdx
  1. 运行以下命令来导出当前的 Ubuntu 发行版:
powershell 复制代码
# 将当前的 Ubuntu 发行版导出为一个 tar 文件。
wsl --export Ubuntu D:\IT-SOFT\Ubuntu\Ubuntu.tar
  1. 注销当前的 WSL 发行版
powershell 复制代码
# 可以理解为移除当前安装的Ubuntu
wsl --unregister Ubuntu
  1. 导入 WSL 发行版到指定的位置
powershell 复制代码
# 第一个地址是目标位置,第二个地址导出的发行版
# 将 Ubuntu 发行版重新安装到 D 盘的 D:\IT-SOFT\Ubuntu\Ubuntu2204 目录中。
wsl --import Ubuntu D:\IT-SOFT\Ubuntu\Ubuntu2204 D:\IT-SOFT\Ubuntu\Ubuntu.tar
  1. 查看状态
powershell 复制代码
wsl -l -v

7.启动虚拟环境

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

3.Ubuntu子系统搭建docker环境

3.1安装docker与docker-compose

  1. 首先进入Ubuntu环境,更新apt包索引(同步软件源列表、获取最新信息):
powershell 复制代码
sudo apt-get update
  1. 卸载可能存在的旧版本
powershell 复制代码
apt-get remove docker docker-engine docker-ce docker.io 
  1. 允许APT通过HTTPS协议来访问存储库
    使得APT包管理器能够通过HTTPS协议与外部存储库进行通信
powershell 复制代码
apt-get install -y apt-transport-https ca-certificates curl software-properties-common 
  1. 添加Docker官方GPG密钥:
    命令使用curl下载Docker官方的GPG密钥,并通过apt-key add -将其添加到系统的密钥环中。这样做是为了确保后续从Docker存储库下载的软件包是经过Docker官方认证的,防止中间人攻击:
powershell 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加Docker的APT存储库
powershell 复制代码
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包中所指定的版本。
powershell 复制代码
#  简单的安装,自动配置相关版本
apt-get install docker-ce
# 指定安装相关依赖和版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 安装docker-compose命令:
powershell 复制代码
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 可以大大简化配置和管理工作。

相关推荐
码农新猿类4 分钟前
服务器本地搭建
linux·网络·c++
小度爱学习12 分钟前
linux中的执行命令格式及命令帮助
linux·运维·chrome
神奇侠202429 分钟前
快速入手K8s+Docker+KubeSphere+DevOps
docker·kubernetes·devops
良许Linux40 分钟前
嵌入式算吃青春饭么?
linux
良许Linux1 小时前
马上要毕业去工作了,做嵌入式软件开发工程师,但是完全不会编程怎么办?
linux
良许Linux1 小时前
学stm32,有什么学习方法?
linux
良许Linux1 小时前
为啥有好多人说 Arduino 是玩具?
linux
独行soc1 小时前
2025年常见渗透测试面试题-红队面试宝典下(题目+回答)
linux·运维·服务器·前端·面试·职场和发展·csrf
mosaicwang1 小时前
dnf install openssl失败的原因和解决办法
linux·运维·开发语言·python
想躺在地上晒成地瓜干1 小时前
树莓派超全系列教程文档--(24)本地化设置、SSH及配置防火墙
linux·ssh·树莓派·raspberrypi·树莓派教程