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

news2024/11/6 5:08:38

一、基本概念

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,"features": {"buildkit": true}},设置 "experimental": true,使 Docker 可以使用实验性功能,其中包括 LCOW。LCOW 允许在 Windows 上直接运行 Linux 容器。设置 "features": { "buildkit": true },启用 Docker 的 BuildKit 构建工具,这将显著加快你在后续步骤中使用 docker build 构建应用镜像的速度)

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容器
(& 'C:\Program Files\Docker\docker.exe' context create linux-context --docker "host=npipe:./pipe/docker_engine"
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 的模式运行)
   重启 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,能够更高效地利用资源,快速部署和扩展,使用虚拟机,适合对安全性隔离和多系统支持有需求的环境

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

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

相关文章

Docker-- cgroups资源控制实战

上一篇:容器化和虚拟化 什么是cgroups? cgroups是Linux内核中的一项功能,最初由Google的工程师提出,后来被整合进Linux内核; 它允许用户将一系列系统任务及其子任务整合或分隔到按资源划分等级的不同组内,从而为系统…

解决ImportError: DLL load failed while importing _message: 找不到指定的程序。

C:\software\Anoconda\envs\yolov5_train\python.exe C:\Project\13_yolov5-master\train.py C:\software\Anoconda\envs\yolov5_train\lib\site-packages\torchvision\io\image.py:13: UserWarning: Failed to load image Python extension: [WinError 127] 找不到指定的程序…

超越Axure:探索新一代原型设计工具

Axure RP是一款被广泛认可的快速原型设计工具,专为专业设计师打造,用于创建高效的产品原型图,包括APP和网页的原型图、框架图和结构图等。Axure RP制作的原型图能够实现与实际APP相似的交互效果,便于向用户或客户展示,…

综合项目--博客

一。基础配置: 1.配置主机名,静态IP地址 2.开启防火墙配置 3.部分开启selinux并且配置 4.服务器之间使用同ntp.aliyun.com进行世家能同步 5.服务器之间实现SSH绵密登陆 二。业务需求 1.Sever-NFS-DNS主机配置NFS服务器,将博客网站资源…

dns欺骗

[[Ettercap]] 少不了这个 arp 毒化和流量截取的中间人工具。 dns欺骗原理 什么是 DNS 欺骗? DNS 欺骗(DNS Spoofing) 是一种网络攻击技术,攻击者通过修改 DNS 响应,将目标用户的 DNS 查询结果篡改,指向攻…

危机来临前---- 力扣: 876

危机即将来临 – 链表的中间节点 描述: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例: 何解? 1、遍历找到中间节点 : 这个之在回文链表中找…

SQL Server数据库中,报错:用户名或密码不正确

1、 用户名或密码不正确 2、解决方式 可能是服务器名称不对,检查服务器名称是否是安装sqlserver数据的服务器名称。安装sqlserver数据的服务器,没有开启1433端口,需要开启端口 下一步保证:TCP/IP 状态状态为:已启用 然…

PKG_CHECK_MODULES(FUSE,fuse)

运行 ./configure 命令报错如下: ./configure: line 13934: syntax error near unexpected token FUSE,fuse ./configure: line 13934: PKG_CHECK_MODULES(FUSE,fuse)解决方案: 命令窗口运行如下命令,安装 pkg-config: sudo …

不要只知道deepl翻译,这里有10个专业好用的翻译工具等着你。

deepl翻译的优点还是有很多的,比如翻译的准确性很高,支持翻译的语言有很多,并且支持翻译文件和文本。但是现在翻译工具那么多,大家需要翻译的场景也有很多,怎么能只拥有一个翻译工具呢。所以在这里我帮助大家寻找了一波…

如何检索 LINEMOD 数据集的相机内参

简介 BOP (Benchmark for 6D Object Pose Estimation) 是一个专为6D物体姿态估计而设计的基准测试平台。它为研究人员提供了多种数据集,以帮助评估和比较物体识别和姿态估计算法的性能。官方网站是 BOP,你可以在这里找到丰富的资源和信息。 检索 LINEM…

健康生活的重要性,注重规律作息

在快节奏的现代生活中,健康已成为我们最宝贵的财富。随着生活水平的提高,人们越来越注重养生,追求身心的和谐与平衡。那么,如何在繁忙的日常中实践健康养生,为生活注入新的活力呢?以下是一些实用的建议&…

最简单方式SSH连接局域网中另一台电脑的WSL2

1、首先确认一下WSL2中的SSH服务是否开启: 先安装更新一下,再安装一下ssh服务模块,这里很多人都没有安装过。 sudo apt update sudo apt upgrade sudo apt install openssh-server 2、配置SSH服务器: 打开配置文件&#xff0c…

andrular输入框input监听值传递

效果图&#xff1a; step1: E:\projectgood\ajnine\untitled4\src\app\apple\apple.component.html <button mat-button (click)“openDialog()”>Open dialog step2: E:\projectgood\ajnine\untitled4\src\app\apple\apple.component.ts import {Component, inject}…

数据结构——二叉树(续集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ 在上一篇博客我们…

动态规划 —— dp问题-按摩师

1. 按摩师 题目链接&#xff1a; 面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/the-masseuse-lcci/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;选择到i位置…

python爬取旅游攻略(1)

参考网址&#xff1a; https://blog.csdn.net/m0_61981943/article/details/131262987 导入相关库&#xff0c;用get请求方式请求网页方式&#xff1a; import requests import parsel import csv import time import random url fhttps://travel.qunar.com/travelbook/list.…

C++设计模式创建型模式———原型模式

文章目录 一、引言二、原型模式三、总结 一、引言 与工厂模式相同&#xff0c;原型模式&#xff08;Prototype&#xff09;也是创建型模式。原型模式通过一个对象&#xff08;原型对象&#xff09;克隆出多个一模一样的对象。实际上&#xff0c;该模式与其说是一种设计模式&am…

基于STM32的智能温室环境监测与控制系统设计(代码示例)

一、项目概述 在现代农业中&#xff0c;智能大棚能够通过环境监测、数据分析和自动控制等技术手段&#xff0c;实现对作物生长环境的精细化管理。本项目旨在设计一个基于STM32单片机的智能大棚系统&#xff0c;能够实时监测光照强度、空气温湿度及土壤湿度&#xff0c;并根据设…

(五)Web前端开发进阶2——AJAX

目录 1.Ajax概述 2.Axios库 3.认识URL 4.Axios常用请求方法 5.HTTP协议——请求报文/响应报文 6.HMLHttpRequest对象 7.前后端分离开发&#xff08;接口文档&#xff09; 8.Element组件库 1.Ajax概述 AJAX 是异步的 JavaScript和XML(Asynchronous JavaScript And XML)。…

进程信号——信号的保存

信号的概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注意,阻塞和忽略是不同的,只要信号…