如何使用Docker将.Net6项目部署到Linux服务器(一)

目录

配置服务器环境

配置yum

配置docker

 安装.NetCore SDK6.0

发布Net6

添加Dockerfile。

 发布文件。

 编辑DockerFile文件

​编辑

上传文件

安装MySql


配置服务器环境

  • 配置yum

在配置yum之前,我们需要先了解yum是什么,yum,是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。

yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。

yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。

它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

更新yum包

sudo yum update

安装yum-utils 用来管理yum源代

sudo yum install -y yum-utils

yum的使用

首先用yum来升级软件,yum的操作大都须有超级用户的权限,当然可以用sudo。装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。

安装命令

yum install xxx

删除命令

yum remove xxx

 其他常用命令

1.yum check-update        列出所有可更新的软件清单
2.yum update             安装所有更新软件
3.yum -y install <package_name> 安装指定的软件
4.yum update <package_name>  更新指定的软件
5.yum list  <package_name>       不加<package_name>列出所有可安裝的软件清单,加了列出指定的
6.yum -y remove <package_name> 删除软件
7.yum search <package_name>   查找软件       
8.yum list installed   列出所有已安装的软件包
9.yum list extras    列出所有已安装但不在 Yum Repository 內的软件包
10.yum info <package_name>  不加<package_name>列出所有软件包的信息,加了列出指定的 
11.yum provides <package_name> 列出软件包提供哪些文件
12.yum clean packages 清除缓存目录(/var/cache/yum)下的软件包
13. yum clean all     清除缓存目录(/var/cache/yum)下的软件包及旧的headers
  • 配置docker

查看资源库中有没有安装过docker rpm包

yum list installed | grep docker

如果之前安装过可以不用安装,如果想重新安装也可以,执行卸载老版本docker以及相关依赖即可

sudo yum remove docker docker-common container-selinux docker-selinux docker-engine

  安装docker

yum -y install docker-ce

如果出现 No package docker-ce available 错误,这里我们只需要设置稳定的仓库,添加yum源即可。

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

然后再执行安装Docker命令进行安装就可以了 。

  启动docker

sudo systemctl start docker

 设置Docker开机自启动

sudo systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

查看Docker是否运行 

systemctl status docker

docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-12-12 16:54:00 CST; 34s ago
     Docs: https://docs.docker.com
 Main PID: 26847 (dockerd)
   CGroup: /system.slice/docker.service
           └─26847 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Dec 12 16:53:59 iZ2ze6on3jy8afby5yaj0bZ systemd[1]: Starting Docker Application Container Engine...
Dec 12 16:53:59 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:53:59.341325810+08:00" le...up"
Dec 12 16:53:59 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:53:59.490260781+08:00" le...t."
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:54:00.172727029+08:00" le...ng"
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:54:00.261938793+08:00" le...e."
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:54:00.287876345+08:00" le...0.7
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:54:00.287988480+08:00" le...on"
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ dockerd[26847]: time="2023-12-12T16:54:00.316181097+08:00" le...ck"
Dec 12 16:54:00 iZ2ze6on3jy8afby5yaj0bZ systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

 查看可用容器

若要列出正在运行的容器,请使用 docker ps 命令

docker ps -a

需要查看前述输出中的以下三个项

  • IMAGE 列中列出的映像名称;在此示例中为 tmp-ubuntu: latest。 请注意,你可以从同一映像创建多个容器。 这是一种强大的管理功能,可用于在解决方案中实现缩放。

  • STATUS 列中列出的容器状态。 在本例中,一个容器正在运行,一个容器已退出。 容器的状态通常是容器运行状况的第一个指标。

  • NAMES 列中列出的容器名称。 除了第一列中的容器 ID 之外,容器还会接收名称。 在本例中,由于你没有为每个容器显式提供名称,因此,Docker 为容器提供了随机名称。 若要使用 --name 标志为容器提供显式名称,请使用 run 命令。

为什么要为容器命名

借助此功能,可运行同一映像的多个容器实例。 容器名称是唯一的,这意味着如果指定了某一名称,则不能重复使用该名称来创建新的容器。 重复使用特定名称的唯一方法是删除之前的容器

 运行容器

若要启动容器,请使用 docker run 命令。 只需按名称或 ID 指定要运行的映像,即可从映像启动容器。 通过此方式启动的容器提供交互式体验

docker run -d tmp-ubuntu

暂停容器

若要暂停容器,请运行 docker pause 命令

docker pause happy_wilbur

 如何重启容器

若要重启容器,请运行 docker restart 命令

docker restart happy_wilbur

停止容器

若要停止正在运行的容器,请运行 docker stop 命令

docker stop happy_wilbur

 删除容器

若要删除容器,请运行 docker rm 命令

docker rm happy_wilbur

  •  安装.NetCore SDK6.0

安装包配置

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

执行安装

sudo yum install dotnet-sdk-6.0

 验证Net6的安装环境

dotnet --info

发布Net6

  • 添加Dockerfile。

目前.NET6支持添加DockerFile。我们先将Dockerfile文件属性复制到输出目录的方式调整为** 如果较新则复制**,方便我们部署。

我们来解析以下Dockerfile文件里面的内容与流程

  •  发布文件。

 切记,在发布系统时,目标运行时,一定要选择 可移植,不要选择liunx-64,否则会报错,报错内容为:

System.InvalidOperationException: Unable to resolve service for type '***.***.***' while attempting to activate '***.***.***'
  •  编辑DockerFile文件

dockerfile文件可以由系统自动生成,但是手动发布需要修改系统生成的dockerfile文件,因为手动发布已经生成了dll文件,不需要调用build命令再次生成。所以我们需要修改DockerFile,只需要保留程序入口以及运行端口指定就可以了。

  • 上传文件

首先我们需要新建一个目录

mkdir forum_manage

然后我们将已经发布后的文件上传到服务器该目录下。我这里使用的工具是xftp

打开发布后的目录后,开始进行上传。

  • 安装MySql

查看系统版本

cat /etc/redhat-release

查看系统是否已经安装过MySql

rpm -qa | grep mysql

查看是否有安装 mariadb,该软件与 MySQL 数据库有冲突,需要手动卸载

rpm -qa | grep mariadb

移除MySql相关的软件

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

安装MySql需要在MySql官网查看Mysql安装包。找到MySQL Community Server

选择 MySQL 的版本

注意 MySQL 的版本需要与 Linux 的版本对应上

centos7 系统对应的 MySQL 是 el7
centos8 系统对应的 MySQL 是 el8
一般情况下,直接选择第一个安装包即可,第一个安装包的版本会不定时的更新,与本文所用的安装包有略微的差别,但是并不影响具体的使用

截止 2023-5-11 最新版为 mysql-8.0.33-1.el8.x86_64.rpm-bundle.tar

下载安装包

cd /usr/local
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar

等待下载完成,查看下载后的文件

ll

解压

解压之后会有很多包产生,为了方便查看,将其解压到 /usr/local/mysql_package 里面

mkdir /usr/local/mysql_package
cd /usr/local/mysql_package
tar -xvf /usr/local/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar -C /usr/local/mysql_package

使用rpm安装

必须按照顺序执行命令,否则会出现依赖错误的报错

rpm -ivh mysql-community-common-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.0.31-1.el8.x86_64.rpm

常见错误总结

未按照规定顺序安装软件

按照顺序安装即可解决

 openssl 缺失

 安装 openssl-devel 即可解决

rpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpm

使用 yum install openssl-devel -y 安装 openssl-devel

yum install openssl-devel -y

 perl 和 libaio 缺失

安装 prel 和 libaio 即可解决

yum list perl
yum install -y perl.x86_64

查看与 libaio 相关的软件

yum list libaio

 安装

yum install -y libaio*

libc.so.6 缺失

大概率是因为下载的 MySQL版本与 Linux 版本对应不上,可以检查一下 MySQL 压缩包后缀名里面的参数是否与系统版本匹配

  • centos7 系统对应的 MySQL 是 el7
  • centos8 系统对应的 MySQL 是 el8

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实时视频美颜SDK的选择指南与性能比较

时下&#xff0c;直播平台如何选取合适的SDK成为了一项重要的决策。本文将带您深入探讨实时视频美颜SDK的选择指南&#xff0c;并进行性能比较&#xff0c;助您做出明智的决策。 一、SDK功能概览 在选择实时视频美颜SDK之前&#xff0c;首先需要明确您的应用需求。不同的SDK可…

VSCode 中使用 AI智能编程工具的几个小妙招

可能你已经在IDE中安装了CodeGeeX&#xff0c;也了解到CodeGeeX能够帮助你编写代码、调试问题、创建文档&#xff0c;生成单元测试等。 但是总有些“Wow&#xff01;”时刻&#xff0c;还在等你发现。今天就介绍几个CodeGeeX插件在VSCode中的使用技巧和小窍门。 一、侧边栏放…

代驾系统开发:驾驶智能化的代码之路

代驾系统的开发涉及到许多复杂而精密的技术&#xff0c;这些技术的融合不仅提升了出行服务的水平&#xff0c;也为开发者带来了独特的挑战。让我们深入探讨代驾系统的关键技术和相应的代码实现。 1. 实时定位技术&#xff1a; 代驾系统的核心在于实时定位&#xff0c;这涉及…

Unity 置顶OpenFileDialog文件选择框

置顶文件选择框 &#x1f32d;处理前&#x1f959;处理后 &#x1f32d;处理前 &#x1f959;处理后 解决方案

前端 Web Workers 简介

简介 以前我们总说&#xff0c;JS 是单线程没有多线程&#xff0c;当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验&#xff0c;从而需要设置把任务放在任务队列中&#xff1b;执行任务队列中的任务也并非多线程进行的&#xff0c;然而现在 HTML5 提供了…

Yolov5双目测距-双目相机计数及测距教程(附代码)

引言 在计算机视觉领域&#xff0c;Yolov5-Binocular相机距离计数及测距是一个引人注目的研究方向。本教程将为小白用户提供一个简明扼要的学习指南&#xff0c;涵盖了关键步骤&#xff0c;包括标定、公示推倒以及重要的代码片段。 第一步&#xff1a;环境搭建 首先&#x…

论文阅读_反思模型_Reflexion

英文名称: Reflexion: Language Agents with Verbal Reinforcement Learning 中文名称: 反思&#xff1a;具有言语强化学习的语言智能体 文章: http://arxiv.org/abs/2303.11366 代码: https://github.com/noahshinn/reflexion 作者: Noah Shinn (Northeastern University) 日期…

【从零开始学习JAVA集合 | 第一篇】深入解读HashMap源码(含面试题)

目录 目录 前言&#xff1a; HashMap简介&#xff1a; HashMap的常用常量和变量&#xff1a; HashMap的重要考点&#xff1a; HashMap的存储过程&#xff1a; HashMap的扩容过程&#xff1a; HashMap的初始化&#xff1a; 常见面试题&#xff1a; 总结&#xff1a;…

Linux 高级管理,MySQL服务器的构建与维护

实验环境 某公司因业务范围日益扩大&#xff0c;最近订购了一套基于B/S架构的电子商务系统&#xff0c;在正式部署之前&#xff0c;要 求对现有的httpd服务器进行改造&#xff0c;首先需要增加MySQL数据库服务。 需求描述 1. 编译安装MySQL服务器&#xff0c;并添加为mysqld系…

mybatisplus saveBatch版本问题导致CPU打满生产问题定位

一、生产现象 1、16:57 运维告知Push微服务有一台因为CPU被打满&#xff0c;自动重启&#xff0c;询问原因。 2、17:00 查看异常节点CPU轨迹,16:30开始CPU出现异常飙升 3、17:10 结合生产日志错误&#xff0c;以及定时任务运行情况&#xff0c;得出结论&#xff1a; 产品在…

conda的安装及使用 以pycharm 为例

下载 https://docs.conda.io/en/latest/miniconda.html 下载 window版本 74M且下着吧。 安装 一路next或agree &#xff0c;不同意人家也不会按装 。重要的是安装目录 让andconda当老大 pycharm的使用 创建项目时如下图选择 成功后进入项目的Terminal则如下图表示成功

【Pytorch】学习记录分享1——Tensor张量初始化与基本操作

1. 基础资料汇总 资料汇总 pytroch中文版本教程 PyTorch入门教程 B站强推&#xff01;2023公认最通俗易懂的【PyTorch】教程&#xff0c;200集付费课程&#xff08;附代码&#xff09;人工智能_机器 视频 1.PyTorch简介 2.PyTorch环境搭建 basic: python numpy pandas pytroch…

Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介 本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装&#xff0c;并安装PyTorch2.1.1来测试是否安装成功。 安装Ubuntu系统 如果是旧的不支持UEFI启动的主板&#xff0c;请参考本人博客U盘系统盘制作与系统安装&#xff08;详细图解&#xff09…

03 Temporal 详细介绍

前言 在后端开发中&#xff0c;大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中&#xff0c;可能更多的直接使用数据库、定时任务、消息队列等作为基础&#xff0c;来解决上面的问题。然…

入门PostgreSQL:安装和设置数据库的完整指南!

下载和安装 PostgreSQL&#xff1a; 访问 PostgreSQL 的官方网站(https://www.postgresql.org/)并下载适合你操作系统的最新版本。 执行安装程序&#xff0c;并按照提示完成安装过程。 在安装过程中&#xff0c;你需要设置超级用户(Superuser)密码&#xff0c;这是用于管理数…

【C++】仿函数在模板中的应用——【默认模板实参】详解(n)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.引入&#xff1a;查看(容器)文档时常…

开发案例:使用 canvas 实现图表系列之折线图

一、功能结构 实现一个公共组件的时候&#xff0c;首先分析一下大概的实现结构以及开发思路&#xff0c;方便我们少走弯路&#xff0c;也可以使组件更加容易拓展&#xff0c;维护性更强。然后我会把功能逐个拆开来讲&#xff0c;这样大家才能学习到更详细的内容。下面简单阐述…

C语言好题分享七(三数之和)

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ 三数之和 题目来源LeetCode&#xff1a;刷题传送门 题目&#xff1a;给你一个整数数组 nums &#xff0c;判断…

Linux——MySQL数据库的使用

访问MySQL数据库 MySOL数据库系统也是一个典型的C/S&#xff08;客户端/服务器&#xff09;架构的应用&#xff0c;要访问MySOL数据库 需要使用专门的客户端软件&#xff0c;在Linux系统中&#xff0c;最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。 登录到MySQL服…

Vue3-13- 【v-for】循环一个对象

说明 v-for 这个东西就很神奇&#xff0c;可以遍历一个对象&#xff0c; 当然&#xff0c;它遍历对象是通过 对象的属性名&#xff0c;遍历对象的属性值。语法格式如下 &#xff1a; v-for"(value,key,index) in objName" value : 属性的值 key &#xff1a;属性的k…