AWS容器化部署指南

AWS容器化部署指南

容器化部署是一种现代化的应用部署方式,通过将应用及其依赖项打包在容器中,实现跨环境的一致性、可移植性和高效性。Amazon Web Services(AWS)提供了多种容器服务,帮助开发者轻松部署、管理和扩展容器化应用。本文将详细介绍在 AWS 上进行容器化部署的步骤、使用的服务及最佳实践。


目录

  1. 1. 容器化部署概述
  2. 2. AWS 容器服务简介
    • 2.1 Amazon ECS(Elastic Container Service)
    • 2.2 Amazon EKS(Elastic Kubernetes Service)
    • 2.3 AWS Fargate
    • 2.4 Amazon ECR(Elastic Container Registry)
  3. 3. 容器化应用的准备
    • 3.1 安装 Docker
    • 3.2 创建 Dockerfile
    • 3.3 构建和测试容器镜像
    • 3.4 推送镜像到 Amazon ECR
  4. 4. 在 AWS 上部署容器
    • 4.1 使用 Amazon ECS 部署
    • 4.2 使用 Amazon EKS 部署
    • 4.3 使用 AWS Fargate 部署
  5. 5. 网络与安全配置
    • 5.1 配置 VPC 和子网
    • 5.2 设置安全组和 IAM 角色
  6. 6. 自动扩展与负载均衡
    • 6.1 自动扩展(Auto Scaling)
    • 6.2 弹性负载均衡(ELB)
  7. 7. 监控与日志管理
    • 7.1 Amazon CloudWatch
    • 7.2 AWS CloudTrail
  8. 8. CI/CD 集成
    • 8.1 使用 AWS CodePipeline
    • 8.2 使用 AWS CodeBuild 和 CodeDeploy
  9. 9. 容器化部署最佳实践
  10. 10. 案例分析
  11. 11. 总结
  12. 12. 进一步学习资源

1. 容器化部署概述

1.1 什么是容器化?

容器化是一种轻量级、可移植和自给自足的方法,用于打包、分发和运行应用。与虚拟机相比,容器更加高效,因为它们共享主机操作系统,而不是包含完整的操作系统实例。

1.2 容器化的优势

  • 可移植性:容器化应用可以在不同的环境中一致运行,包括开发、测试和生产环境。
  • 资源效率:容器比传统虚拟机更轻量,启动速度更快,占用资源更少。
  • 简化管理:通过容器编排工具,可以轻松管理大规模的容器部署。
  • 隔离性:容器化应用相互隔离,确保应用之间的独立性和安全性。

2. AWS 容器服务简介

AWS 提供了一系列服务,支持容器化应用的部署与管理。以下是主要的容器服务介绍:

2.1 Amazon ECS(Elastic Container Service)

Amazon ECS 是一个高度可扩展、高性能的容器管理服务,支持 Docker 容器的运行和管理。ECS 支持两种部署模式:

  • EC2 页面:在您管理的 EC2 实例上运行容器。
  • Fargate 页面:无服务器计算,自动管理底层基础设施。

2.2 Amazon EKS(Elastic Kubernetes Service)

Amazon EKS 是托管的 Kubernetes 服务,使您能够在 AWS 上轻松运行 Kubernetes 容器化应用。EKS 处理 Kubernetes 控制平面和节点管理,简化集群的部署和维护。

2.3 AWS Fargate

AWS Fargate 是一种无服务器计算引擎,支持 ECS 和 EKS。使用 Fargate,您无需管理服务器或集群,可以专注于容器化应用的开发和部署。

2.4 Amazon ECR(Elastic Container Registry)

Amazon ECR 是AWS 的完全托管的容器镜像仓库,安全地存储、管理和部署 Docker 容器镜像。ECR 与 ECS 和 EKS 深度集成,简化镜像的推送和拉取过程。


3. 容器化应用的准备

在将应用部署到 AWS 容器服务之前,需要对应用进行容器化处理。以下步骤将指导您完成容器化应用的基本准备。

3.1 安装 Docker

Docker 是最流行的容器化平台,支持创建、管理和运行容器。

安装步骤

  1. 访问 Docker 官网:https://www.docker.com/get-started

  2. 选择适合的操作系统,下载并安装 Docker Desktop。

  3. 安装完成后,通过命令行验证安装:

    docker --version
    

3.2 创建 Dockerfile

Dockerfile 是一个文本文件,包含构建 Docker 镜像的指令。以下是一个简单的 Node.js 应用的 Dockerfile 示例:

# 使用官方 Node.js 镜像作为基础镜像
FROM node:14# 设置工作目录
WORKDIR /app# 复制 package.json 和 package-lock.json
COPY package*.json ./# 安装应用依赖
RUN npm install# 复制应用代码
COPY . .# 暴露应用端口
EXPOSE 3000# 启动应用
CMD ["node", "app.js"]

3.3 构建和测试容器镜像

构建镜像

在包含 Dockerfile 的项目根目录,运行以下命令构建镜像:

docker build -t my-node-app .

测试镜像

运行容器以测试应用:

docker run -p 3000:3000 my-node-app

打开浏览器访问 http://localhost:3000 验证应用是否正常运行。

3.4 推送镜像到 Amazon ECR

步骤

  1. 创建 ECR 仓库

    • 登录 AWS 管理控制台。
    • 前往 Amazon ECR 服务。
    • 点击“创建仓库”按钮。
    • 输入仓库名称(如my-node-app-repo),选择私有或公有仓库。
    • 点击“创建”。
  2. 获取登录凭证

    使用 AWS CLI 获取 Docker 登录命令:

    aws ecr get-login-password --region <your-region> | docker login --username AWS --password-stdin <your-account-id>.dkr.ecr.<your-region>.amazonaws.com
    
  3. 标记镜像

    docker tag my-node-app:latest <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/my-node-app-repo:latest
    
  4. 推送镜像

    docker push <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/my-node-app-repo:latest
    

4. 在 AWS 上部署容器

完成容器化应用准备后,可以选择适合的 AWS 容器服务进行部署。以下分别介绍在 Amazon ECS、EKS 和 Fargate 上部署容器的步骤。

4.1 使用 Amazon ECS 部署

步骤

  1. 访问 Amazon ECS 控制台

    • 登录 AWS 管理控制台。
    • 前往 Amazon ECS 服务。
  2. 创建集群

    • 点击“创建集群”按钮。
    • 选择“EC2 Linux + Networking”或“Fargate”集群模板。
    • 配置集群名称和其他参数,点击“创建”。
  3. 创建任务定义

    • 在 ECS 控制台左侧导航栏中选择“任务定义”。
    • 点击“创建新的任务定义”。
    • 选择“Fargate”或“EC2”作为启动类型。
    • 配置任务名称、容器定义(包括镜像地址、端口映射等)。
    • 点击“创建”。
  4. 部署服务

    • 在集群页面,点击“创建服务”。
    • 选择服务类型(如“REPLICA”)。
    • 选择任务定义和集群。
    • 配置服务名称、任务数量、负载均衡器等。
    • 点击“创建服务”。
  5. 验证部署

    • 查看服务状态,确保任务正在运行。
    • 通过负载均衡器的 DNS 名称访问应用。

4.2 使用 Amazon EKS 部署

步骤

  1. 创建 EKS 集群

    使用 AWS 管具的 EKS 控制台或 eksctl 工具创建集群。

    使用 eksctl 创建集群

    eksctl create cluster --name my-eks-cluster --region <your-region> --nodegroup-name standard-workers --node-type t3.medium --nodes 3 --nodes-min 1 --nodes-max 4 --managed
    
  2. 配置 kubectl

    更新 kubeconfig 以连接 EKS 集群:

    aws eks update-kubeconfig --region <your-region> --name my-eks-cluster
    
  3. 部署应用

    创建 Kubernetes 部署和服务描述文件(如 deployment.yamlservice.yaml),示例如下:

    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: my-node-app
    spec:replicas: 3selector:matchLabels:app: my-node-apptemplate:metadata:labels:app: my-node-appspec:containers:- name: my-node-appimage: <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/my-node-app-repo:latestports:- containerPort: 3000
    
    # service.yaml
    apiVersion: v1
    kind: Service
    metadata:name: my-node-app-service
    spec:type: LoadBalancerselector:app: my-node-appports:- protocol: TCPport: 80targetPort: 3000
    

    应用配置文件:

    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    
  4. 验证部署

    查看服务状态,获取负载均衡器的 DNS 名称,通过浏览器访问应用。

4.3 使用 AWS Fargate 部署

使用 AWS Fargate 无需管理服务器或集群,适合无状态应用的部署。

步骤

  1. 创建 Fargate 集群

    在 Amazon ECS 控制台,创建一个使用 Fargate 的集群。

  2. 创建任务定义

    在任务定义中,选择 Fargate 作为启动类型,配置容器参数。

  3. 部署服务

    在集群中创建服务,选择 Fargate 作为任务运行平台,配置所需的任务数量和网络设置。

  4. 验证部署

    通过配置的负载均衡器访问应用。


5. 网络与安全配置

确保容器化应用的网络和安全配置正确,是保障应用安全和高效运行的关键。

5.1 配置 VPC 和子网

步骤

  1. 访问 VPC 控制台

    • 登录 AWS 管理控制台。
    • 前往 VPC 服务。
  2. 创建 VPC

    • 点击“创建 VPC”按钮。
    • 输入 VPC 名称、IPv4 CIDR 块(如10.0.0.0/16)。
    • 选择是否启用 IPv6。
  3. 创建子网

    • 在 VPC 控制台左侧导航栏中选择“子网”。
    • 点击“创建子网”按钮。
    • 选择创建的 VPC,输入子网名称和 IPv4 CIDR 块(如10.0.1.0/24)。
  4. 配置互联网网关(IGW)

    • 在 VPC 控制台左侧导航栏中选择“互联网网关”。
    • 点击“创建互联网网关”,命名并创建。
    • 选择刚创建的 IGW,点击“附加到 VPC”,选择您的 VPC。
  5. 配置路由表

    • 在 VPC 控制台左侧导航栏中选择“路由表”。
    • 选择与 VPC 关联的路由表,点击“编辑路由”。
    • 添加路由:
      • 目标0.0.0.0/0
      • 目标:选择刚创建的互联网网关(IGW)。
    • 保存路由。

5.2 设置安全组和 IAM 角色

安全组

安全组类似于虚拟防火墙,用于控制容器实例的入站和出站流量。

配置步骤

  1. 访问 EC2 安全组

    • 前往 EC2 控制台。
    • 在左侧导航栏中选择“安全组”。
  2. 创建安全组

    • 点击“创建安全组”按钮。
    • 输入安全组名称和描述,选择关联的 VPC。
    • 添加入站规则,如允许 HTTP(端口80)、HTTPS(端口443)和应用所需的其他端口。
    • 添加出站规则,通常默认允许所有出站流量。
  3. 关联安全组

    • 在创建 ECS、EKS 或 Fargate 服务时,选择相应的安全组。

IAM 角色

为容器服务创建 IAM 角色,赋予必要的权限,如访问 ECR、CloudWatch 等。

配置步骤

  1. 访问 IAM 控制台

    • 前往 IAM 服务。
  2. 创建角色

    • 点击“角色”。
    • 点击“创建角色”按钮。
    • 选择服务,如 ECSEKS
    • 选择所需的权限策略,如 AmazonEC2ContainerServiceFullAccess
    • 点击“创建角色”。
  3. 关联角色

    • 在 ECS 或 EKS 集群配置中,选择创建的 IAM 角色。

6. 自动扩展与负载均衡

为了确保应用在不同负载下的性能和可用性,需配置自动扩展和负载均衡。

6.1 自动扩展(Auto Scaling)

自动扩展根据应用负载自动调整容器实例或任务的数量,确保应用始终保持最佳性能。

配置步骤

  1. 访问 Auto Scaling 控制台

    • 前往 EC2 控制台。
    • 在左侧导航栏选择“Auto Scaling 组”。
  2. 创建 Auto Scaling 组

    • 点击“创建 Auto Scaling 组”。
    • 选择启动模板或配置。
    • 选择 VPC 和子网。
    • 配置期望容量、最小和最大容量。
  3. 配置扩展策略

    • 设置扩展条件,如基于 CPU 利用率、内存使用率等指标。
    • 定义扩展和收缩的步伐。
  4. 关联 Auto Scaling 组

    • 在 ECS 或 EKS 服务中,设置任务或 Pod 使用 Auto Scaling 组管理实例规模。

6.2 弹性负载均衡(ELB)

ELB 将流量分配到多个容器实例,确保应用的高可用性和容错性。

配置步骤

  1. 访问 ELB 控制台

    • 前往 EC2 控制台。
    • 在左侧导航栏选择“负载均衡器”。
  2. 创建负载均衡器

    • 点击“创建负载均衡器”按钮。
    • 选择负载均衡器类型(如应用负载均衡器 ALB)。
    • 配置负载均衡器名称、网络设置(VPC、子网)。
  3. 配置监听器和目标组

    • 设置监听器端口(如 HTTP 80)。
    • 创建目标组,选择目标类型为 IP实例,指定容器实例。
    • 配置健康检查参数。
  4. 关联服务

    • 在 ECS 或 EKS 服务中,关联创建的目标组,实现流量分发。

7. 监控与日志管理

监控与日志管理对于确保容器化应用的稳定运行和快速故障排查至关重要。

7.1 Amazon CloudWatch

Amazon CloudWatch 提供实时监控、警报和日志管理功能。

配置步骤

  1. 访问 CloudWatch 控制台

    • 前往 CloudWatch 服务。
  2. 设置监控指标

    • 监控 ECS、EKS 或 Fargate 提供的默认指标,如 CPU 利用率、内存使用率等。
    • 创建自定义指标,根据应用需求监控特定指标。
  3. 配置警报

    • 在 CloudWatch 中创建警报,根据监控指标触发通知(如 SNS 消息)。
  4. 查看日志

    • 配置容器任务或服务将日志发送到 CloudWatch Logs。
    • 在 CloudWatch Logs 中查看和分析应用日志。

7.2 AWS CloudTrail

AWS CloudTrail 记录所有 API 调用,便于审计和合规检查。

配置步骤

  1. 访问 CloudTrail 控制台

    • 前往 CloudTrail 服务。
  2. 创建 Trails

    • 点击“创建 Trail”按钮。
    • 配置 Trail 名称,选择 S3 存储桶存储日志。
    • 启用事件记录,选择管理事件和数据事件。
  3. 分析日志

    • 使用 CloudTrail 与 CloudWatch Logs 集成,实时监控 API 活动。
    • 结合 Athena 等工具进行日志分析。

8. CI/CD 集成

持续集成与持续部署(CI/CD)优化了应用的开发和发布流程,确保快速、高质量的交付。

8.1 使用 AWS CodePipeline

AWS CodePipeline 是一个持续交付服务,帮助自动化构建、测试和部署流程。

配置步骤

  1. 访问 CodePipeline 控制台

    • 前往 CodePipeline 服务。
  2. 创建 Pipeline

    • 点击“创建 Pipeline”按钮。
    • 输入 Pipeline 名称,选择新建服务角色或现有角色。
    • 配置源阶段,如 GitHub、CodeCommit。
    • 配置构建阶段,选择 AWS CodeBuild 项目。
    • 配置部署阶段,选择 ECS、EKS 或其他部署目标。
  3. 启动 Pipeline

    • 完成配置后,开始执行 Pipeline,自动化构建和部署流程。

8.2 使用 AWS CodeBuild 和 CodeDeploy

AWS CodeBuild 是一个完全托管的构建服务,自动编译源代码,运行测试并生成部署工件。

配置步骤

  1. 创建 CodeBuild 项目

    • 访问 CodeBuild 控制台。
    • 点击“创建项目”按钮。
    • 配置项目名称、来源代码、构建环境(使用 Docker 代理)。
    • 编写 buildspec.yml 文件,定义构建过程。
  2. 关联 CodeBuild 与 CodePipeline

    • 在 CodePipeline 中,添加 CodeBuild 作为构建阶段。

AWS CodeDeploy 自动化应用的部署过程,支持蓝绿部署、滚动更新等策略。

配置步骤

  1. 创建 CodeDeploy 应用

    • 访问 CodeDeploy 控制台。
    • 点击“创建应用”,选择计算平台(如 ECS)。
  2. 配置部署组

    • 选择目标群集、服务名称。
    • 设置部署类型(蓝绿部署或滚动更新)。
  3. 集成到 Pipeline

    • 在 CodePipeline 的部署阶段,选择 CodeDeploy 应用,实现自动化部署。

9. 容器化部署最佳实践

为了确保容器化应用的高效、安全和可维护性,应遵循以下最佳实践:

9.1 使用多阶段构建

多阶段构建减少镜像体积,提高构建效率。例如:

# 构建阶段
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build# 运行阶段
FROM node:14-alpine
WORKDIR /app
COPY --from=builder /app/build ./build
COPY --from=builder /app/package*.json ./
RUN npm install --only=production
EXPOSE 3000
CMD ["node", "build/app.js"]

9.2 最小化镜像体积

使用轻量级基础镜像(如 Alpine),移除不必要的文件和依赖,优化镜像体积。

9.3 安全性配置

  • 定期扫描镜像漏洞:使用 Amazon ECR 的漏洞扫描功能,及时发现和修复安全漏洞。
  • 最小权限原则:容器运行时使用最低权限的 IAM 角色,限制资源访问。
  • 数据加密:加密传输中的数据和静态数据,保障数据安全。

9.4 配置健康检查

设置容器的健康检查,确保服务在异常时自动重启或替换。

9.5 日志管理

集中管理和分析容器日志,使用 AWS CloudWatch Logs 或第三方日志平台,方便故障排查和性能优化。

9.6 资源限制

为容器设置合理的 CPU 和内存限制,防止资源过度消耗,确保集群稳定运行。

9.7 自动化与基础设施即代码

使用工具如 Terraform、AWS CloudFormation 管理基础设施,实现自动化部署和可重复性。


10. 案例分析

案例:使用 Amazon ECS 和 Fargate 部署高可用的 Web 应用

背景

一家电子商务公司希望将其现有的 Web 应用迁移到 AWS 上,实现高可用性和自动扩展,以应对季节性流量波动。

解决方案

公司选择使用 Amazon ECS 结合 AWS Fargate 部署容器化的 Web 应用,利用 ECR 存储镜像,通过 Application Load Balancer 分发流量,并配置自动扩展策略。

实施步骤

  1. 容器化应用

    • 创建 Dockerfile,构建 Docker 镜像。
    • 推送镜像到 Amazon ECR。
  2. 配置 ECS 集群

    • 创建使用 Fargate 的 ECS 集群。
    • 定义任务定义,指定容器镜像、资源需求和网络设置。
  3. 部署服务

    • 创建 ECS 服务,选择 Fargate 作为启动类型。
    • 配置目标组和负载均衡器。
  4. 配置自动扩展

    • 根据 CPU 利用率设置自动扩展策略,确保在高流量时自动增加任务数量。
  5. 监控与日志

    • 配置 CloudWatch 监控应用性能,设置警报。
    • 将应用日志发送到 CloudWatch Logs,便于分析和故障排查。

结果

  • 应用实现了高可用性,负载自动均衡。
  • 在销售高峰期,自动扩展任务应对流量激增,确保用户体验。
  • 管理和维护工作量大幅减少,团队能够专注于业务创新。

11. 总结

容器化部署是现代云应用开发的重要趋势,AWS 提供了丰富的容器服务和工具,简化了应用的部署、管理和扩展过程。通过正确的配置和最佳实践,您可以在 AWS 上构建高效、可扩展且安全的容器化应用环境。

关键要点

  • 选择适合的容器服务:根据应用需求选择 Amazon ECS、EKS 或 Fargate。
  • 安全配置:实施 IAM 最小权限原则,启用加密和多因素认证。
  • 自动化与监控:使用 CI/CD 工具自动化部署流程,利用 CloudWatch 和其他监控工具实时监控应用状态。
  • 优化资源:通过自动扩展和负载均衡确保资源的高效利用和应用的高可用性。

通过持续学习和实践,您将能够充分利用 AWS 的容器服务,实现业务的快速发展和技术创新。


12. 进一步学习资源

官方文档

  • Amazon ECS 官方文档:https://docs.aws.amazon.com/ecs/index.html
  • Amazon EKS 官方文档:https://docs.aws.amazon.com/eks/index.html
  • AWS Fargate 官方文档:https://docs.aws.amazon.com/fargate/index.html
  • Amazon ECR 官方文档:https://docs.aws.amazon.com/ecr/index.html

在线课程

  • AWS Training and Certification:https://aws.amazon.com/cn/training/

    • 课程示例:
      • Architecting on AWS
      • Developing on AWS
      • DevOps Engineering on AWS
  • Coursera

    • AWS Fundamentals: Going Cloud-Native
    • Containers on AWS
  • Udemy

    • Docker and AWS | From Beginner to the Expert
    • Kubernetes for AWS

认证考试

  • AWS Certified DevOps Engineer – Professional:适合希望在 AWS 上实现持续交付和自动化流程的专业人士。
  • AWS Certified Solutions Architect – Associate:覆盖 AWS 容器服务的设计和部署。
  • AWS Certified Containers - Specialty(预测中):专注于 AWS 容器化应用的构建和管理。

社区与论坛

  • AWS 官方论坛:https://forums.aws.amazon.com/
  • Stack Overflow AWS 标签:https://stackoverflow.com/questions/tagged/aws
  • Reddit AWS 社区:https://www.reddit.com/r/aws/
  • AWS 中文社区:https://www.awsuser.com/

工具与平台

  • AWS Management Console:集中管理 AWS 的图形界面。
  • AWS CLI:https://aws.amazon.com/cli/ — 命令行工具,用于管理 AWS 服务。
  • AWS SDKs:https://aws.amazon.com/tools/ — 支持多种编程语言的开发工具包。
  • eksctl:https://eksctl.io/ — 简化 EKS 集群创建的命令行工具。
  • Terraform:https://www.terraform.io/ — 基础设施即代码工具,支持管理 AWS 和其他云资源。

通过不断学习和参与社区交流,您可以深入掌握 AWS 容器服务的使用和管理,实现高效、可靠的容器化部署。

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

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

相关文章

爱普生可编程晶振SG-8200CJ特性与应用

在高速发展的电子技术领域&#xff0c;时钟源作为电子系统的“心脏”&#xff0c;其性能直接影响设备的稳定性与可靠性。爱普生SG-8200CJ可编程晶振凭借其优秀的频率精度、低抖动性能及广泛的环境适应性&#xff0c;正成为众多领域的得力之选&#xff0c;为各类设备的高效运行与…

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

小程序 wxml 语法 —— 36 wxml 语法 - setData() 修改数据

在小程序中修改数据不推荐通过赋值的方式进行修改&#xff0c;通过赋值的方式修改数据无法改变页面的数据&#xff1b; 在微信小程序中&#xff0c;推荐调用 setData() 方式进行修改&#xff0c;setData() 方法接收对象作为参数&#xff0c;key 是需要修改的数据&#xff0c;v…

Linux 生成静态库

文章目录 前提小知识生成和使用.a库操作步骤 在应用程序中&#xff0c;有一些公共的代码需要反复使用的&#xff0c;可以把这些代码制作成“库文件”&#xff1b;在链接的步骤中&#xff0c;可以让链接器在“库文件”提取到我们需要使用到的代码&#xff0c;复制到生成的可执行…

校验pytorch是否支持显卡GPU 不支持卸载并安装支持版本

1.输入如下命令 pythonimport torchtorch.__version__torch.cuda.is_available() // 输出False 就是不支持如下图 2.可以看到我电脑目前是不支持的 我们现在开始卸载 exit() //先退出pip uninstall torch //开始卸载这就卸载完成了 3.我们开始安装 nvidia-smi.exe //运行…

日常debug——苍穹外卖套餐修改时不回显数据

发现问题 今天在改套餐相关接口时&#xff0c;出现了一些问题。根据之前写的菜品和口味两个表的增删改查操作的时候&#xff0c;修改菜品数据时&#xff0c;前端页面会向后端发送请求&#xff0c;将菜品信息回显&#xff0c;口味数据也会出现。但是在写套餐相关的接口时&#…

微信小程序引入vant-weapp组件教程

本章教程,介绍如何在微信小程序中引入vant-weapp。 vant-weapp文档:https://vant-ui.github.io/vant-weapp/#/button 一、新建一个小程序 二、npm初始化 npm init三、安装 Vant Weapp‘ npm i @vant/weapp -

定时器Tim输出比较(output compare)

输出比较OC(Output Compare) 输出比较可以通过比较CNT与CCR寄存器值的关系&#xff0c;来对输出电平进行置1、置0或翻转的操作&#xff0c;用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道&#xff0c;高级定时器的前3个通道额外拥有死区生…

计算机网络-应用层

客户/服务器方式&#xff08;C/S方式&#xff09; 对等方式(P2P) 域名系统DNS 作用 DNS含有域名和IP地址对应数据库&#xff0c;查询后将域名对应的IP地址发送给主机。 域名系统结构 域名服务器类型 域名解析方式 动态主机配置协议DHCP 作用&#xff1a;为局域网中的个主机…

代码优化——基于element-plus封装组件:表单封装

前言 今天实现一个基于element-plus表单组件的二次封装&#xff0c;什么是二次封装&#xff1f;查看以下表单&#xff0c;传统表单组件是不是用<el-form>嵌套几个<el-form-item>即可实现&#xff0c;那么一个表单可不可以实现&#xff0c;传入一个对象给封装组件&a…

docker私有仓库配置

基于 harbor 构建docker私有仓库 1、机器准备 os&#xff1a;openEuler 、rockylinux mem&#xff1a;4G disk&#xff1a;100G 2、关闭防火墙、禁用SELinux 3、安装docker和docker-compose yum install docker-ce -y配置加速 vim /etc/docker/d…

SpringBoot集成MQ,四种交换机的实例

​RabbitMQ交换机&#xff08;Exchange&#xff09;的核心作用 在RabbitMQ中&#xff0c;​交换机 是消息路由的核心组件&#xff0c;负责接收生产者发送的消息&#xff0c;并根据规则&#xff08;如路由键、头信息等&#xff09;将消息分发到对应的队列中。 不同交换机类型决…

Docker 配置镜像源

》》Daemon {"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me"] }》》》然后在重新 docker systemctl restart docker

llamafactory 微调教程

文章目录 llamlafactory微调deepseekr1-0.5b1.1 说明1.2 搭建环境创建GPU实例连接实例部署llama_factory创建隧道&#xff0c;配置端口转发访问llama_factory 1.3 微调大模型从huggingface上下载基座模型查看模型是否下载成功准备数据集微调评估微调效果导出合并后的模型 释放实…

[项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键

基于FreeRTOS的STM32四轴飞行器: 七.遥控器 一.遥控器按键摇杆功能说明二.摇杆和按键的配置三.按键扫描 一.遥控器按键摇杆功能说明 两个手柄四个ADC。 左侧手柄&#xff1a; 前后推为飞控油门&#xff0c;左右推为控制飞机偏航角。 右侧手柄&#xff1a; 控制飞机飞行方向&a…

2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…

光谱相机检测肉类新鲜度的原理

光谱相机通过分析肉类样本在特定波长范围内的光谱反射特性&#xff0c;结合化学与生物指标的变化规律&#xff0c;实现对其新鲜度的无损检测。其核心原理可概括为以下方面&#xff1a; 一、光谱特征与物质成分的关联性 ‌物质特异性吸收/反射‌ 不同化学成分&#xff08;如水分…

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现软件开机自启

文章目录 前言 一、准备工作1.1 环境搭建1.2 创建 Tauri 项目1.3 添加依赖 二、实现开机自启的基本原理2.1 开机自启的基本概念2.2 Tauri 应用的生命周期 三、Windows 平台实现3.1 Windows 注册表机制3.2 实现步骤3.3 注意事项 四、Linux 平台实现4.1 Linux systemd 服务4.2 实…

Windows10下docker desktop命令行操作指南(大部分也适用于Linux)

Windows系统最大的特点就是可视化操作&#xff0c;点点鼠标就能操作软件。但是在特殊的情况下&#xff0c;比如docker desktop图标点了之后没反应&#xff0c;但是看后台程序&#xff0c;它又已经运行了&#xff0c;这时候就要使用命令行来操作了。 针对这次情况&#xff0c;所…

静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在阅读本文前&#xff0c;强烈建议首先阅读介绍生成时钟的文章&#xff0c;尤其是其中关于时钟极性和反相的相关内容。 静态时序分析&#xff1a;SDC约束命令cr…