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

目录

[一 配置服务器环境](#一 配置服务器环境)

[1.1 配置yum](#1.1 配置yum)

[1.1.1 更新yum包](#1.1.1 更新yum包)

[1.1.2 yum命令](#1.1.2 yum命令)

[1.2 配置docker](#1.2 配置docker)

[1.2.1 查看是否安装过docker rpm包](#1.2.1 查看是否安装过docker rpm包)

[1.2.2 安装docker](#1.2.2 安装docker)

[1.2.3 启动docker](#1.2.3 启动docker)

[1.2.4 设置Docker开机自启动](#1.2.4 设置Docker开机自启动)

[1.2.5 查看Docker是否运行](#1.2.5 查看Docker是否运行)

[1.2.6 查看可用容器](#1.2.6 查看可用容器)

[1.2.7 运行容器](#1.2.7 运行容器)

[1.2.8 暂停容器](#1.2.8 暂停容器)

[1.2.9 如何重启容器](#1.2.9 如何重启容器)

[1.2.10 停止容器](#1.2.10 停止容器)

[1.2.11 删除容器](#1.2.11 删除容器)

[1.3 安装.NetCore SDK6.0](#1.3 安装.NetCore SDK6.0)

[1.3.1 安装包配置](#1.3.1 安装包配置)

[1.3.2 执行安装](#1.3.2 执行安装)

[1.3.3 验证Net6的安装环境](#1.3.3 验证Net6的安装环境)

[1.4 安装MySql](#1.4 安装MySql)

[1.4.1 查看系统版本](#1.4.1 查看系统版本)

[1.4.2 卸载MySql](#1.4.2 卸载MySql)

[1.4.3 安装MySql](#1.4.3 安装MySql)

[1.4.4 启动MySql](#1.4.4 启动MySql)

[1.4.5 开启MySql端口](#1.4.5 开启MySql端口)


一 配置服务器环境

1.1 配置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包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

1.1.1 更新yum包
sudo yum update

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

sudo yum install -y yum-utils
1.1.2 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

1.2 配置docker

1.2.1 查看是否安装过docker rpm包
yum list installed | grep docker

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

sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
1.2.2 安装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命令进行安装就可以了 。

1.2.3 启动docker
sudo systemctl start docker
1.2.4 设置Docker开机自启动
sudo systemctl enable docker

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

1.2.5 查看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.

1.2.6 查看可用容器

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

docker ps -a

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

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

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

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

为什么要为容器命名

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

1.2.7 运行容器

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

docker run -d tmp-ubuntu
1.2.8 暂停容器

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

docker pause happy_wilbur
1.2.9 如何重启容器

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

docker restart happy_wilbur
1.2.10 停止容器

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

docker stop happy_wilbur
1.2.11 删除容器

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

docker rm happy_wilbur

1.3 安装.NetCore SDK6.0

1.3.1 安装包配置
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
1.3.2 执行安装
sudo yum install dotnet-sdk-6.0
1.3.3 验证Net6的安装环境
dotnet --info

1.4 安装MySql

1.4.1 查看系统版本
cat /etc/redhat-release
1.4.2 卸载MySql

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

rpm -qa | grep mysql

卸载MySql

rpm -e --nodeps 软件名

查找MySql文件,并将其删除

find / -name mysql
whereis mysql

find命令和whereis命令查询到的mysql文件全部删除

rm -rf 查询到的mysql路径

删除mysql配置文件

rm /etc/my.cnf

确认是否全部删除mysql

rpm -qa | grep -i mysql

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

rpm -qa | grep mariadb

移除MySql相关的软件

rpm -e --nodeps community-common-8.0.31-1.el8.x86_6

如果出现包移除失败时,error: package ---nodeps is not installed

看了一下 rpm的参数表,发现这个 nodeps 应该是 no depends 的缩写,于是乎,有点儿顿悟,莫非是要删除的模块没有依赖?

去掉这个参数

rpm -e mysql-community-common-8.0.31-1.el8.x86_6
1.4.3 安装MySql

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

选择 MySQL 的版本

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

centos7 系统对应的 MySQL 是 el7

centos8 系统对应的 MySQL 是 el8

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

下载安装包

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.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm

rpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm

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

rpm -ivh mysql-community-server-8.0.31-1.el7.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 缺失

安装 prellibaio 即可解决

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
1.4.4 启动MySql

启动MySql服务

systemctl start mysqld

获取首次启动生成的随机密码

sudo grep 'temporary password' /var/log/mysqld.log

登录mySql并修改密码

mysql -uroot -p

更新密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPwd123';

开启允许root账户远程连接

# 切换使用mysql数据库
use mysql;
# 开启远程
update user set host='%' where user='root'; 
# 刷新权限
flush privileges;

退出mysql

quit;
1.4.5 开启MySql端口

开启防火墙端口允许访问

#查看防火墙状态
systemctl status firewalld 
#查看开放的端口
firewall-cmd --query-port=3306/tcp
#添加端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent 
#重载防火墙
firewall-cmd --reload 
#再次查看端口是否已经开放
firewall-cmd --query-port=3306/tcp

systemctl status firewalld 查看防火墙状态

firewall-cmd --query-port=3306/tcp 查看开放的端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent 添加端口

firewall-cmd --reload 重载防火墙

firewall-cmd --query-port=3306/tcp 再次查看端口是否已经开放

设置mySql开启自启

systemctl enable mysqld
相关推荐
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
2739920291 小时前
Ubuntu20.04 安装build-essential问题
linux
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
华为云PaaS服务小智1 小时前
华为大咖说 | 浅谈智能运维技术
运维·华为·华为云
zhd15306915625ff3 小时前
化工厂主要涉及的自动化备件有哪些?
运维·自动化·化工厂
Jason-河山3 小时前
利用API返回值实现商品信息自动化更新:技术与实践
运维·自动化
wowocpp4 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu
wowocpp4 小时前
查看 磁盘文件系统格式 linux ubuntu blkid ext4
linux·数据库·ubuntu