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

目录

一 配置服务器环境

1.1 配置yum                                                                                                                    

1.1.1 更新yum包

1.1.2 yum命令

1.2 配置docker                                                                                                               

1.2.1 查看是否安装过docker rpm包

  1.2.2 安装docker

  1.2.3 启动docker

 1.2.4 设置Docker开机自启动

1.2.5 查看Docker是否运行 

 1.2.6 查看可用容器

 1.2.7 运行容器

1.2.8 暂停容器

 1.2.9 如何重启容器

1.2.10 停止容器

 1.2.11 删除容器

 1.3 安装.NetCore SDK6.0                                                                                             

1.3.1 安装包配置

1.3.2 执行安装

 1.3.3 验证Net6的安装环境

 1.4 安装MySql

 1.4.1 查看系统版本

 1.4.2 卸载MySql

1.4.3 安装MySql

1.4.4 启动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  安装指定的软件
4.yum update   更新指定的软件
5.yum list         不加列出所有可安裝的软件清单,加了列出指定的
6.yum -y remove  删除软件
7.yum search    查找软件       
8.yum list installed   列出所有已安装的软件包
9.yum list extras    列出所有已安装但不在 Yum Repository 內的软件包
10.yum info   不加列出所有软件包的信息,加了列出指定的 
11.yum provides  列出软件包提供哪些文件
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

如何使用Docker将.Net6项目部署到Linux服务器(一)_第1张图片

解压

解压之后会有很多包产生,为了方便查看,将其解压到 /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

如何使用Docker将.Net6项目部署到Linux服务器(一)_第2张图片

使用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 缺失

安装 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
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   查看防火墙状态

如何使用Docker将.Net6项目部署到Linux服务器(一)_第3张图片

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

你可能感兴趣的:(linux,docker,运维)