windows server2019下载docker拉取redis等镜像并运行项目

一、基本概念

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-ModuleUpdate-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运行

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

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

相关文章

使用最新版的wvp和ZLMediaKit搭建Gb28181测试服务器

文章目录 说明安装1.安装nodejs简介安装步骤 2.安装java环境3.安装mysql安装修改密码 4.安装redis5.安装编译器6.安装cmake7.安装依赖库8.编译ZLMediaKit9.编译wvp-GB28181-pro 配置1.ZLMediaKit配置2.wvp-GB28181-pro配置2.1.配置ZLMediaKit连接信息2.2.28181服务器的配置2.3.…

Python程序设计 生成器

1. 基础概念 在讲迭代之前,先搞清楚这些名词: 循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while 语句。迭代(iterate),指的是按照某种…

mac m1 docker本地部署canal 监听mysql的binglog日志

mac m1 docker本地部署canal监听mysql的binglog日志(虚拟机同理) 根据黑马视频部署 1.docker 部署mysql 1.docker拉取mysql 镜像 因为m1是arm架构.需要多加一条信息 正常拉取 docker pull mysql:tagm1拉取 5.7的版本. tag需要自己指定版本 docker pull --platform linux/x…

[linux]docker基础

常见命令 Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: Docker Docs 案例: 查看DockerHub,拉取Nginx镜像,创建并运行Nginx容器 在DockerHub中搜索Nginx镜像 拉取Nginx镜像 查看本地镜像列表 把镜像保持到本地 查看保持命令的…

C++builder中的人工智能(10)神经网络中的Sigmoid函数

在这篇文章中,我们将探讨最受欢迎的激活函数之一——Sigmoid函数。我们将解释什么是Logistic函数,以及它与Sigmoid函数的区别,并展示如何在C应用中使用这些函数。 目录 人工神经网络(ANN)中的激活函数是什么&#xff…

cursor:如何注销帐号和使用流量

点击右上角的设定图标 点击管理 在弹出的网页点登入 点”continue" 点SETING 了解最新信息请扫码关注:

如何选择适合小团队的项目管理工具?免费与开源软件推荐

目录 一、小团队项目管理工具的重要性 二、热门项目管理工具介绍 (一)禅道 (二)Trello (三)Asana (四)JIRA 三、免费项目管理软件推荐 (一)ES 管理器 …

Scaffold-ETH 2:颠覆传统开发的区块链神器,快速构建你的去中心化应用!

目录 引言一、Scaffold-eth框架二、前期准备三、搭建Scaffold-ETH 2(一)使用npx create-ethlatest进行设置(二)使用git clone进行设置1、克隆仓库:2、进入到此目录3、安装依赖项 四、配置Scaffold ETH-2的开发环境&…

kafka+zookeeper的搭建

kafka从2.8版本开始,就可以不用配置zookeeper了,但是也可以继续配置。我目前使用的kafka版本是kafka_2.12-3.0.0.tgz,其中前面的2.12表示是使用该版本的scala语言进行编写的,而后面的3.00才是kafka当前的版本。 通过百度网盘分享…

恢复rm -rf删除的数据

注:本文演示的是ext4文件系统格式数据恢复 系统版本:ubuntu16.04 恢复数据目录:数据盘(非根)目录 恢复工具:extundelete 0.2.4 恢复所有被删除数据 ext4magic 恢复指定目录数据 一、注意事项: …

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构

1.1库的概念 库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。 1.2库的分类 根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口&#xf…

C++【string类,模拟实现string类】

🌟个人主页:落叶 🌟当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…

Me-LLaMA——用于医疗领域的新型开源大规模语言模型

摘要 大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数,通过海量文本数据训练而成,能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜…

关于在VS中使用Qt不同版本报错的问题

最开始需要配置的地方 首先看一下我的Qt有关的环境变量: Path环境变量里: 这里就是把对应Qt编译器环境下的bin目录放进来:比如你使用的是msvc2017_64或者MinGW QMAKESPEC环境变量: 这个就选择Qt对应的编译器目录下的\mkspecs\w…

Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)

首先第一步打开IE浏览器,根据下图所示,访问网页时会弹出警告窗口。 打开【控制面板】图标。查看方式改为小图标,打开【管理工具】 第五步进入【管理工具】页面后,找到并双击【服务器管理器】选项。 第六步在弹出的窗口中&#…

中肿团队提出的“免疫三明治”(放疗+化疗+免疫治疗),成功登上柳叶刀肿瘤|顶刊精析·24-11-08

小罗碎碎念 该研究首次发现在同期放化疗基础上增加特瑞普利单抗(PD-1抗体)新辅助和辅助治疗显著提高了高危局部晚期鼻咽癌患者生存率。 如果大家看完这篇推送以后,有什么好的医工交叉点子,欢迎和我一起探讨!&#xff0…

Golang--协程和管道

1、概念 程序: 是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态) 进程: 是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域&#xff0…

动力商城-02 环境搭建

1.父工程必须满足&#xff1a;1.1删除src目录 1.2pom 2.依赖继承 //里面的依赖&#xff0c;后代无条件继承<dependencies></dependencies>//里面的依赖&#xff0c;后代想要继承&#xff0c;得自己声明需要使用&#xff0c;可以不写版本号&#xff0c;自动继承&l…

JavaWeb开发9

ResponseBody 类型&#xff1a;方法注解、类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是实体对象/集合&#xff0c;将会转换为JSON格式响应 说明&#xff1a;RestControllerControllerResponseBody; 统…