可以自己做网站的网址/seo百科大全
一、基本概念
1、windows server
指由微软公司开发的“Windows”系列中的“服务器”版本。这意味着它是基于Windows操作系统的,但专门设计用于服务器环境,而不是普通的桌面或个人用户使用。主要用途包括服务器功能、用户和资源管理、虚拟化等
2、docker
字面意思是“码头工人”或“装卸工”,核心功能——将软件及其所有依赖打包成便于传输和部署的“容器”。主要用途包括容器化应用程序、提高开发效率、轻量级虚拟化等
二、操作步骤
1、安装docker
win+x选择windows powershell管理员窗口打开,按顺序逐个输入并回车以下命令
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
(用于设置 .NET 应用程序的安全协议,确保使用安全的协议标准(TLS 1.2),以提高网络请求的安全性和兼容性,尤其是在安装或更新模块时)
Install-Module -Name PowerShellGet -Force -AllowClobber
(安装或更新 PowerShellGet 模块,PowerShellGet
是一个用于查找、安装、更新和发布 PowerShell 模块的模块,安装它确保能够使用 Install-Module
和 Update-Module
等命令来下载和安装模块)
Install-Module DockerProvider -Force
(DockerProvider
是用于从 Docker
存储库下载和安装 Docker 的提供程序模块)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
(在线启用 Windows 的 Hyper-V
可选功能,启用它是运行 Docker 所需的条件之一,因为 Docker 需要一个虚拟化引擎来创建和管理容器)
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
(在线启用 Windows 的 Containers
可选功能,Containers
功能是运行 Docker 容器所必需的,使系统能够运行和管理容器化的应用程序)
Install-Package Docker -ProviderName DockerProvider -Force
(通过指定的提供程序 DockerProvider
强制安装 Docker)
修改docker配置文件
(C:\ProgramData\docker\config\daemon.json修改,如果没有则创建daemon.json。{"experimental": true},设置 "experimental": true
,使 Docker 可以使用实验性功能,其中包括 LCOW。LCOW 允许在 Windows 上直接运行 Linux 容器。另外如果创建daemon.json,则它内容不可为空)
2、拉取redis镜像(或其他镜像)
打开 微屁嗯 的TUN模式,并在Fake IP过滤中增加*.docker.io以获取真实的解析ip
(目前由于国内镜像多数停止服务,因此选择默认官方镜像地址拉取。TUN模式相比于系统代理工作在应用层,该模式工作在网络层,可以将所有应用程序和系统流量都进行转发,可以使得docker对于国外镜像的请求均可成功;Fake IP 本身的主要目的是在代理环境中优化 DNS 解析流程,提升连接效率,因为传统代理模式下,客户端需要先进行 DNS 解析,获取目标服务器的真实 IP 地址,然后再通过代理进行连接,而Fake IP 模式下,代理服务器会为每个域名分配一个虚拟的假 IP 地址,并将其返回给客户端。客户端使用这个假 IP 建立连接,实际代理服务器根据预先建立的映射关系,将连接转发到实际的目标服务器)
注册docker hub账户,并通过docker login命令登录
(docker hub https://app.docker.com/是官方的镜像源地址,需要注册后在命令行中登录才可拉取镜像。登录后登录信息会保存起来,提示Your password will be stored unencrypted in C:\Users\Administrator\.docker\config.json,如果重新装docker只要这个文件还在就可以不用登录了)
切换到linux容器
(
docker context use linux-context
以上命令创建了一个名为 linux-context
的 Docker 上下文,指定使用 Windows 本地命名管道连接 Docker 引擎。然后,使用 docker context use linux-context
命令切换到该上下文,以启用 Linux 容器支持。官方的 Redis 镜像通常是基于 Linux 的。如果不切换到支持 Linux 容器的上下文,您将无法正确拉取或运行这些镜像)
拉取redis镜像
(docker pull redis)
3、运行redis
下载并解压 LCOW (Linux Containers on Windows)内核文件
(Releases · linuxkit/lcow · GitHub 下载后解压放到C:\Program Files\Linux Containers\目录下。LCOW(Linux Containers on Windows) 是微软提供的一项技术,允许在 Windows 上直接运行 运行基于 Linux 的容器镜像)
设置环境变量以启用 LCOW
([Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine") 该环境变量告诉 Docker 引擎在 Windows 上启用对 LCOW 的支持。这使得 Docker 可以在 Windows 操作系统上运行 Linux 容器。当 Docker 守护进程启动时,它会检查是否存在 LCOW_SUPPORTED
环境变量。如果该变量被设置且值为 "1"
,守护进程将以支持 LCOW 的模式运行。设置服务使用Start-service docker启动就相当于启动docker的守护进程dockerd,如果需要查看docker日志,则可以命令启动守护进程dockerd查看命令行输出内容)
重启 Docker 服务以应用更改
(Restart-Service docker)
运行redis
(docker run --rm -it -p 6379:6379 redis)
4、启动项目
编写dockerfile文件
(# 使用包含 glibc 的预构建 Alpine 镜像
FROM frolvlad/alpine-glibc:alpine-3.13
# 安装必要的工具
RUN apk add --no-cache bash curl gzip
# 设置工作目录
WORKDIR /app
# 使用 ADD 命令解压 JDK 压缩包到 /usr/local/jdk
ADD jdk-8u202-linux-x64.tar.gz /usr/local/jdk
# 设置 JAVA_HOME 和 PATH 环境变量
ENV JAVA_HOME=/usr/local/jdk
ENV PATH="$JAVA_HOME/bin:$PATH"
# 验证 Java 安装
RUN java -version
# 复制应用程序的 JAR 文件
COPY ectd-admin-web-v3.0.6.jar /app/app.jar
# 运行应用程序
CMD ["java", "-jar", "/app/app.jar"]
通过在 Dockerfile 中指定依赖、环境变量和配置,确保应用在任何地方构建时都具有一致的运行环境,并且它明确了镜像构建的每一步,使构建过程可视化和文档化,方便理解和维护)
使用当前目录的 Dockerfile 构建镜像
(docker build -t project . ;-t project
将生成的镜像命名为 project
)
运行启动
(docker run --rm project)
三、额外补充
1、LCOW和WSL2
LCOW(Linux Containers on Windows)和 WSL2(Windows Subsystem for Linux 2)都是微软推出的在 Windows 系统上运行 Linux 容器和环境的技术,但它们的实现方式和用途有本质区别
LCOW:
- 字面含义:LCOW 是 “Linux Containers on Windows”的缩写,意为 “在 Windows 上运行 Linux 容器”。
- 本质:LCOW 是一种容器技术,允许在 Windows 上直接运行 Linux 容器。它使用 Hyper-V 虚拟机托管 Linux 内核,基于 Hyper-V 隔离技术运行 Linux 容器,但其管理和控制仍然是通过 Windows 容器平台完成
- 支持版本:主要在 Windows Server 2019 上实验性支持,逐渐被 WSL2 和其他虚拟化技术取代
WSL2:
- 字面含义:WSL2 是 “Windows Subsystem for Linux 2”的缩写,意为 “Windows 的 Linux 子系统 2”。
- 本质:WSL2 是一种在 Windows 上运行完整 Linux 环境的轻量虚拟化技术,它使用真正的 Linux 内核(相比于WSL)在 Windows 内部虚拟机中运行,从而支持更高的系统兼容性和性能
- 支持版本:广泛支持 Windows 10、Windows 11 和 Windows Server 2022,成为 Windows 平台上运行 Linux 环境和容器的主要方式
总结:由于Windows Server 2019无法支持WSL2,因此采用LCOW技术实现下载docker运行基于linux的镜像
2、docker与VM比较
Docker 和 VM(Virtual Machine,虚拟机)都是虚拟化技术,用于在同一台物理机器上运行多个隔离的操作环境,但它们的实现方式、用途和效率有显著区别。
Docker:
- 字面含义:Docker 是一款开源的容器化平台,专注于应用的容器化部署和管理。
- 本质:
- Docker 是一种容器虚拟化技术,基于 Linux 内核的 cgroups 和 namespace 等功能,允许多个容器共享操作系统内核。
- 容器通过 Docker 引擎隔离不同的应用进程,实现轻量化的虚拟化。这意味着它们不包含完整的操作系统,只包括应用运行所需的库和依赖。
- 用途:
- 开发与部署:适合应用的快速开发、测试和部署,特别是在微服务架构中。
- 跨平台兼容:Docker 容器可以在不同环境中实现一致性(例如开发、测试和生产),减少环境依赖问题。
- 资源效率高:由于共享操作系统内核,Docker 容器启动快,占用资源少,适合高密度部署。
VM:
- 字面含义:Virtual Machine 即“虚拟机”,是一种模拟完整计算机系统的虚拟化技术。
- 本质:
- 虚拟机是硬件虚拟化,通过一个 Hypervisor(虚拟机管理程序,如 VMware、Hyper-V、VirtualBox)在物理机上创建多个虚拟机。每个虚拟机运行自己的操作系统。
- 每个虚拟机包含独立的操作系统和应用程序,隔离性强,但系统资源占用较高。
- 用途:
- 多操作系统需求:适合需要不同操作系统的场景(如同时运行 Windows 和 Linux)。
- 强隔离性:提供硬件级别的隔离,适合高安全性或不同环境间的完全隔离需求。
- 传统数据中心和服务器:虚拟机常用于传统 IT 基础设施中,提供稳定的多操作系统支持和隔离。
总结:使用 Docker,能够更高效地利用资源,快速部署和扩展,使用虚拟机,适合对安全性隔离和多系统支持有需求的环境
3、离线安装docker及镜像步骤
由于DockerProvider不支持本地包源安装,它仅支持 HTTPS 源(安装会报错Currently only https sources are supported. Please register with https source.),所以手动安装保存的docker包。并且这样也省去了安装DockerProvider、NuGet的步骤
在有网服务器上保存docker及镜像包
Save-Package -Name Docker -ProviderName DockerProvider -Path C:\Users\Administrator\Desktop\offline\packages
docker image save -o C:\Users\Administrator\Desktop\offline\images\images.tar redis:latest rabbitmq:management
在离线目标服务器上将保存的本地docker包解压保存至C:\Program Files目录下
注册 Docker 服务
New-Service -Name "Docker" -BinaryPathName "`"C:\Program Files\Docker\dockerd.exe`" --run-service" -DisplayName "Docker Engine" -StartupType Automatic
添加环境变量
[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [System.EnvironmentVariableTarget]::Machine)
运行docker
Start-Service Docker,运行时会自动生成相关的配置文件及数据目录C:\ProgramData\docker
安装镜像
docker load -i C:\Users\Administrator\Desktop\offline\images\images.tar
docker images
4、Hyper-V与硬件虚拟化
Hyper-V:
- 字面含义:“Hypervisor Virtualization”,即“虚拟机监控程序虚拟化”。Hyper-V是微软公司开发的一个虚拟化平台或软件,具体实现了虚拟机监控功能,可以在一台物理计算机上运行多个虚拟机(虚拟操作系统)
- 本质:
- 本质是一种虚拟机监控程序(Hypervisor),具体来说是Type 1(类型1)虚拟机监控程序,也称为“裸金属虚拟化”。Type 1虚拟机监控程序直接运行在硬件之上(需依赖硬件虚拟化的支持),而不是在操作系统之上,这样可以更高效地管理资源
- 用途:
- Hyper-V是Docker在Windows平台上运行Linux容器的一种实现方式。由于Windows系统本身不支持直接运行Linux容器,所以Docker会借助Hyper-V来创建一个Linux虚拟机,并在其中运行容器。
硬件虚拟化:
- 字面含义:即CPU 虚拟化技术,也称为“硬件辅助虚拟化”(Hardware-Assisted Virtualization),是指通过物理处理器提供的虚拟化支持,以便在硬件层级上提升虚拟机性能(例如,现代的x86 CPU(如Intel的VT-x和AMD的AMD-V)提供了对硬件虚拟化的支持,以帮助Hypervisor更高效地管理资源)
- 本质:
- 通过物理CPU提供的特性来辅助虚拟化过程,可以让虚拟机监控程序(如Hyper-V、VMware等)在物理硬件层面更高效地分配资源,减少传统虚拟化需要的软件模拟操作,直接与硬件进行通信。这就提升了虚拟机的运行速度和稳定性。
- 用途:
- 硬件虚拟化让虚拟机拥有自己的独立内存和硬件资源,隔离性和安全性都更好。这使得Docker容器之间互不干扰,提供更稳定的环境。
5、硬件虚拟化的设置
设置硬件虚拟化时,如果在硬件服务器上则根据不同的主板类型进入BIOS设置进行虚拟化设置,如果是虚拟机,则要在虚拟机设置中启用嵌套虚拟化设置(需要注意,如果在虚拟机中安装了 Docker,并且为该虚拟机创建了多个快照,那么每个快照都会包含当时虚拟机的硬件虚拟化设置。也就是说,快照会保存虚拟机的所有配置,包括启用了嵌套虚拟化(Nested Virtualization)的设置。但是如果在快照创建后更改了虚拟机的配置(例如启用或禁用了嵌套虚拟化),恢复快照后,虚拟机将返回到之前的配置。因此进行快照恢复后,注意检查嵌套虚拟化设置)
6、windows server2022
windows server2022也可以采用以上方式(手动安装docker引擎和用于支持linux容器运行的LCOW)进行在线或离线的安装运行,或者也可以通过wsl --install 安装wsl2,然后安装docker desktop运行
相关文章:

windows server2019下载docker拉取redis等镜像并运行项目
一、基本概念 1、windows server 指由微软公司开发的“Windows”系列中的“服务器”版本。这意味着它是基于Windows操作系统的,但专门设计用于服务器环境,而不是普通的桌面或个人用户使用。主要用途包括服务器功能、用户和资源管理、虚拟化等 2、dock…...

数据结构(8.7_2)——败者树
多路平衡归并带来的问题 什么是败者树 败者树的构造 败者树的使用 败者树在多路平衡归并中的应用 败者树的实现思路 总结...

设计模式-七个基本原则之一-里氏替换原则
里氏替换原则(LSP)面向对象六个基本原则之一 子类与父类的替代性:子类应当能够替代父类出现的任何地方,且表现出相同的行为。行为的一致性:子类的行为必须与父类保持一致,包括输入和输出、异常处理等。接口…...

k8s中基于overlay网络和underlay网络的网络插件分别有哪些
在 Kubernetes 中,不同的网络插件会使用 overlay 或 underlay 网络来连接 Pod 和节点。以下是基于 overlay 网络和 underlay 网络的常见 Kubernetes 网络插件: 1. 基于 Overlay 网络的插件 这些插件通过隧道封装技术(如 VXLAN、GRE 等&#…...

一文详解java的数据类型
1. 题记 Java是一门对数据类型敏感的语言,本博文主要总结介绍java语言的数据类型。 2. java的数据类型 Java 的数据类型分为基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 2.1 基本数…...

Flink API 的层次结构
Apache Flink 提供了多层 API,每层 API 针对不同的抽象层次和用途,使得开发者可以根据具体需求选择合适的 API 层次。以下是 Flink API 的层次结构及其简要说明:...

lua入门教程:math
在Lua中,math库是一个非常重要的内置库,它提供了许多用于数学计算的函数。这些函数可以处理各种数学运算,包括基本的算术运算、三角函数、对数函数、随机数生成等。结合你之前提到的Lua中的数字遵循IEEE 754双精度浮点标准,我们可…...

ROS2简介与Ubuntu24.04中安装指南
之前安装了一个版本,但是不愿意写blog,现在想想自己就是个沙子立个flag,每次配置项目,写流程blog ROS简介 ROS(Robot Operating System)是一个开源的机器人软件平台,提供了许多工具和库来帮助…...

命令行工具PowerShell使用体验
命令行工具PowerShell使用 PowerShell是微软开发的一种面向对象的命令行Shell和脚本语言环境,它允许用户通过命令行的方式管理操作系统。相较于传统CMD,PowerShell增加了面向对象的程序设计框架,拥有更强大的功能和扩展性。使用PowerShell可…...

MongoDB 详解:深入理解与探索
在当今的数据库领域,MongoDB 以其独特的特性和强大的功能,成为了众多开发者和企业的首选。本文将对 MongoDB 进行详细的介绍,包括其特点、应用场景、流程图以及源码分析。 一、MongoDB 概述 MongoDB 是一个基于分布式文件存储的开源数据库系…...

使用 Elasticsearch 构建食谱搜索(一)
作者:来自 Elastic Andre Luiz 了解如何使用 Elasticsearch 构建基于语义搜索的食谱搜索。 简介 许多电子商务网站都希望增强其食谱搜索体验。正确使用语义搜索可以让客户根据更自然的查询(例如 “something for Valentines Day - 情人节的礼物” 或 “…...

sealos部署K8s,安装docker时master节点突然NotReady
1、集群正常运行中,在集群master-1上安装了dockerharbor,却发现master-1节点NotReady,使用的网络插件为 Cilium #安装docker和harbor(docker运行正常) rootmaster-1:/etc/apt# apt install docker-ce5:19.03.15~3-0~u…...

使用vite+react+ts+Ant Design开发后台管理项目(五)
前言 本文将引导开发者从零基础开始,运用vite、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术…...

Spring Boot实现多数据源连接和切换
文章目录 前言一、多数据源配置与切换方案二、实现步骤1. 创建多个 DataSource 配置类2. 创建 DataSource 配置类3. 创建动态数据源路由类4. 实现 DynamicDataSource 类5. 创建 DataSourceContextHolder 来存储当前的数据源标识6. AOP 方式切换数据源7. 自定义注解来指定数据源…...

发布 VectorTraits v3.0(支持 X86架构的Avx512系列指令集,支持 Wasm架构及PackedSimd指令集等)
文章目录 支持 X86架构的Avx512系列指令集支持Avx512时的输出信息 支持 Wasm架构及PackedSimd指令集支持PackedSimd时的输出信息VectorTraits.Benchmarks.Wasm 使用说明 新增了向量方法支持 .NET 8.0 新增的向量方法提供交织与解交织的向量方法YGroup3Unzip的范例代码 提供重新…...

详解如何创建SpringBoot项目
目录 点击New Project 选择依赖 简单使用SpringBoot 前面已经讲解了如何获取IDEA专业版,下面将以此为基础来讲解如何创建SpringBoot项目。 点击New Project 选择依赖 注意,在选择SpringBoot版本时,不要选择带SNAPSHOT的版本。 这样&#…...

IT架构管理
目录 总则 IT架构管理目的 明确组织与职责 IT架构管理旨在桥接技术实施与业务需求之间的鸿沟,通过深入理解业务战略和技术能力,推动技术创新以支持业务增长,实现技术投资的最大价值。 设定目标与范围 IT架构管理的首要目的是确立清晰的组织…...

Feign入门实践
引言 随着微服务架构的兴起,服务间的通信变得越来越频繁和复杂。为了简化服务之间的调用过程,提高开发效率和系统的可维护性,Spring Cloud 生态系统提供了多种解决方案,其中 OpenFeign 是一种声明式的 HTTP 客户端,它使…...

Leetcode 买卖股票的最佳时机 Ⅱ
使用贪心算法来解决此问题,通过在价格上涨的每一天买入并在第二天卖出的方式,累计所有上涨的利润,以实现最大收益。关键点是从第二天开始遍历,并且只要当前比前一天价格高,我们就在前一天买入然后第二天卖出去。下面是…...

书生大模型实战营-玩转HF/魔搭社区闯关任务
通过Github Codespace下载InternLM模型并运行 本篇博客是记录《书生大模型实战营第四期-玩转HF/魔搭/魔乐》章节的闯关任务从HF上下载模型文件,对实战营感兴趣的小伙伴也可以扫码报名哦。 一、通过模版创建Codespace环境 访问codespace 点击Jupyter Notebook 模版…...

混响(Reverb):原理、应用与发展趋势的深度解析
目录 引言1. 混响的基本原理2. 混响的应用3. 混响的技术实现4. 混响的未来发展趋势5. 总结 引言 混响(Reverb)是音频信号处理中的重要概念之一,在自然界和音频工程中都扮演着关键角色。从音乐制作到语音识别,从电影音效到虚拟现实…...

Java学习教程,从入门到精通,Java修饰符语法知识点及案例代码(23)
1.Java修饰符语法知识点及案例代码 Java修饰符用于改变类、方法、变量、接口等元素的行为和可见性。主要分为两大类:访问修饰符和非访问修饰符。 访问修饰符(Access Modifiers) public 提供最大的访问权限,任何类都可以访问。使…...

钉钉小程序使用getApp实现类型provide inject的功能 应用场景:解决页面同步子组件弹窗的滚动问题
前言:在开发钉钉小程序的时候 组件内部的弹窗滚动会带着视图同步滚动 所以需要在组件内部弹窗显示的时候禁用视图的scroll滚动 由于我组件封装的比较深 不可能逐级传递 dd也么有provide的语法 所以我使用的getApp 完成控制的效果 最终完美运行 觉得有帮助相互关注一下 后续会持…...

标准化 Git 提交信息的约定
在使用 Git 进行版本控制时,良好的提交信息可以帮助团队成员更好地理解每次提交的目的和影响。为了规范化提交信息,一些团队采用了特定的格式或约定,比如 Angular 团队提出的 Commit Message Conventions。这种规范有助于自动化工具的使用&am…...

React教程(详细版)
React教程(详细版) 1,简介 1.1 概念 react是一个渲染html界面的一个js库,类似于vue,但是更加灵活,写法也比较像原生js,之前我们写出一个完成的是分为html,js,css&…...

Perfect Forwarding(完美转发)
文章目录 1. 引用折叠2. 万能引用3. 完美转发3.1对比:std::move and std::forward比较 3.2使用时机3.3 返回值优化(RVO)两个前提条件注意事项 4. 完美转发失败情况完美转发失败五种情况 完美转发的实现要依赖于模版类型推导和引用折叠和万能引用。 1. 引…...

PHP露营地管理平台小程序系统源码
⛺️【露营新风尚】露营地管理平台系统全攻略⛺️ 🏕️一、露营热潮下的管理难题:如何高效运营露营地?🤔 随着露营文化的兴起,越来越多的人选择在大自然中享受宁静与自由。然而,露营地的管理却面临着诸多…...

速盾:vue的cdn是干嘛的?
CDN,即内容分发网络(Content Delivery Network),是一种将网站的静态资源分发到全球各个节点并缓存起来的技术。它可以帮助网站提供更快的加载速度,更好的用户体验,并且可以减轻源服务器的负载压力。 Vue.j…...

线性代数:Matrix2x2和Matrix3x3
今天整理自己的框架代码,将Matrix2x2和Matrix3x3给扩展了一下,发现网上unity数学计算相关挺少的,所以记录一下。 首先扩展Matrix2x2: using System.Collections; using System.Collections.Generic; using Unity.Mathemati…...

Windows 中 Electron 项目实现运行时权限提升以杀掉特定进程
#Windows 中 Electron 项目实现运行时权限提升以杀掉特定进程 一、引言 在 Windows 操作系统中,有时我们需要以管理员权限来执行某些操作,特别是当需要杀掉由管理员启动的进程时。Electron 是一个开源的框架,用于使用 JavaScript、HTML 和 C…...