在 CentOS 7 上安装 Docker 并安装和部署 .NET Core 3.1

1. 安装 Docker

步骤 1.1:更新包索引并安装依赖包

先安装yum的扩展,yum-utils提供了一些额外的工具,这些工具可以执行比基本yum命令更复杂的任务

sudo yum install -y yum-utils

sudo yum update -y  #更新系统上已安装的所有软件包到最新版本#这条命令用于安装yum-utils、device-mapper-persistent-data和lvm2这三个软件包。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 

步骤 1.2:添加 Docker 官方仓库

用于添加Docker CE(Community Edition,社区版)的软件仓库到系统的yum配置中。这意味着你可以通过yum(或其前端如dnf在CentOS 8及更高版本中)来安装、更新和管理Docker CE软件包。

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

 

  1. 使用yum-config-manager:这是yum-utils包中的一个工具,用于管理yum的仓库配置。它允许你添加、禁用或启用仓库,而无需直接编辑仓库配置文件(通常位于/etc/yum.repos.d/目录下)。

  2. 添加Docker CE仓库:通过指定--add-repo选项和Docker CE的仓库URL(在这个例子中是https://download.docker.com/linux/centos/docker-ce.repo

  3. 仓库URLhttps://download.docker.com/linux/centos/docker-ce.repo是一个指向Docker CE仓库配置文件的URL。当你执行这个命令时,yum-config-manager会从该URL下载仓库配置文件,并将其保存到你的/etc/yum.repos.d/目录下。

步骤 1.3:安装 Docker CE


sudo yum install -y docker-ce docker-ce-cli containerd.io

Docker CE提供了完整的容器化平台,包括Docker引擎、CLI(命令行界面)工具、容器运行时组件(如containerd.io)等,支持构建、发布和运行容器化应用。

4. 手动下载 Docker 仓库文件(如果上面代码报错)

手动下载 Docker 仓库文件并将其放入正确的位置:


sudo curl -L https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

步骤 1.4:启动 Docker 并设置开机自启动


sudo systemctl start docker
sudo systemctl enable docker

步骤 1.5:验证 Docker 安装

sudo docker -v

 步骤 2.1:发布.net core3.1项目(windows)

在解决方案、找到项目目录

选择发布到文件夹

点击打开文件夹 ,默认发布到项目文件的bin 下面的Release\netcoreapp3.1\publish中是编译后的项目文件

3. 创建 Dockerfile

步骤 3.1:创建项目目录并进入目录

mkdir dotnetapp cd dotnetapp

将编译后的项目放到linux目录中

 

步骤 3.2:创建 Dockerfile

1. 创建或更新 Dockerfile

在包含 netcoreapp3.1 文件夹的目录下创建或更新 Dockerfile:

使用 cat 命令创建 Dockerfile 并添加以下内容:

cd /www/wwwroot/donetapp/NewsWebsite
sudo bash -c 'cat > Dockerfile <<EOF
# 使用官方的 ASP.NET Core 运行时作为基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80# 将发布的文件复制到基础镜像中
COPY netcoreapp3.1/ .
ENTRYPOINT ["dotnet", "NewsWebsite.dll"]
EOF'

模版:

# 使用官方的 ASP.NET Core 运行时作为基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80# 将发布的文件复制到基础镜像中
COPY . .
ENTRYPOINT ["dotnet", "YourAppName.dll"]

 

需要修改的地方

  1. 项目路径

    • 确保在正确的目录中执行 Docker 构建命令。该目录应该包含发布后的应用程序文件。
  2. DLL 文件名称

    • YourAppName.dll 修改为您的 .NET Core 应用程序的实际 DLL 文件名。

4.构建和运行 Docker 镜像

步骤 4.1:创建项目目录并进入目录

  1. 确保在正确的目录中
cd /root/dotnetapp/NewsWebsite
  1. 构建 Docker 镜像
sudo docker build -t newswebsiteapp .

 newswebsiteapp是项目名,这个自定义

  1. 运行 Docker 容器
sudo docker run -d -p 8080:80 newswebsiteapp

这条命令的作用是以分离模式(在后台)启动一个名为newswebsiteapp的容器实例,将容器内的80端口映射到宿服务器主机的8080端口上,以便可以通过宿主机的8080端口访问容器内的Web服务。 (记得开启8080端口)

5. 管理 Docker 容器

你可以使用以下命令来管理 Docker 容器:

  • 查看运行的容器:

    sudo docker ps

  • 停止一个容器:

​​​​​​​sudo docker stop <container_id>
  • 删除一个容器:

    sudo docker rm <container_id>

开启端口:

在 CentOS 7 中打开防火墙上的端口 5000 以允许外部访问,可以使用 firewalld 工具。以下是详细步骤:

1. 检查 firewalld 状态

首先,检查 firewalld 是否正在运行:

sudo systemctl status firewalld

如果 firewalld 没有运行,可以启动它:

sudo systemctl start firewalld

2. 开放端口 5000为例

使用以下命令在 firewalld 中开放端口 5000:

 
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent

解释:

  • --zone=public:指定要修改的区域(通常是 public 区域)。
  • --add-port=5000/tcp:添加 TCP 端口 5000。
  • --permanent:永久添加规则。

3. 重新加载 firewalld

应用更改并重新加载 firewalld 配置:

sudo firewall-cmd --reload

4. 验证端口是否开放

使用以下命令验证端口是否成功开放:

sudo firewall-cmd --zone=public --list-ports

确保输出中包含 5000/tcp

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

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

相关文章

使用 Socket和动态代理以及反射 实现一个简易的 RPC 调用

使用 Socket、动态代理、反射 实现一个简易的 RPC 调用 我们前面有一篇 socket 的文章&#xff0c;再之前&#xff0c;还有一篇 java动态代理的文章&#xff0c;本文用到了那两篇文章中的知识点&#xff0c;需要的话可以回顾一下。 下面正文开始&#xff1a; 我们的背景是一个…

【Linux网络】epoll模型构建Reactor_Tcp服务器{协议/客户端/bind/智能指针}

文章目录 1.std::enable_shared_from_this<TcpServer>2.std::bind3.std::make_shared4.std::shared_ptrstd::shared_ptr 和 std::weak_ptr配合使用 5.剖析代码6.整体代码Calculator.hppClientCal.ccCMakeLists.txtCommon.hppEpoller.hppLog.hppMain.ccnocopy.hppProtocol…

YOLOv8预测时报错ValueError

【问题描述】执行YOLOv8预测代码时&#xff1a; # 导入训练好的权重文件做预测 from ultralytics import YOLO# Load a pretrained YOLOv8n model model YOLO("/data/yolov8/runs/detect/train6/weights/best.pt")# Run inference on bus.jpg with arguments model…

四大引用——强软弱虚

目录 一、强引用 二、软引用 三、弱引用 四、虚引用 一、强引用 强引用是在程序代码之中普遍存在的&#xff0c;类似于“Object obj new Object()”&#xff0c;obj变量引用Object这个对象&#xff0c;就叫做强引用。当内存空间不足&#xff0c;Java虚拟机宁愿抛出OutOfMe…

使用 Redis 实现验证码、token 的存储,用自定义拦截器完成用户认证、并使用双重拦截器解决 token 刷新的问题

基于session实现登录流程 1.发送验证码 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff0c;如果不合法&#xff0c;则要求用户重新输入手机号 如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行保存&#xff0c;然后再通过短信…

安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

Linux学习第55天:Linux 4G 通信实验(更快、更高、更强)

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 无论是有线网络还是WiFi都是摆脱不了布线的尴尬&#xff0c;而4G通信可以彻底拜托网线的束缚&#xff0c;实现无线网络通信。 而说到4G就不得不提到5G&#xff0c;中…

关于css中flex布局垂直居中失效问题的原因

项目中遇到用flex进行页面布局后&#xff0c;使用上下居中设置&#xff1a;align-item: center; 目标效果如下&#xff1a; 但是失效&#xff0c;不起作用&#xff0c;如下图所示&#xff1a; 各种排查过后发现设置了子模块 align-self 属性&#xff0c;这会覆盖容器上的 al…

Cesium 实战 - 自定义纹理材质系列之 - 半球雷达效果(预警)

Cesium 实战 - 自定义纹理材质系列之 - 半球雷达效果(预警) 核心代码完整代码在线示例Cesium 给实体对象(Entity)提供了很多实用的样式,基本满足普通项目需求; 但是作为 WebGL 引擎,肯定不够丰富,尤其是动态效果样式。 对于实体对象(Entity),可以通过自定义材质,…

微软蓝屏事件警示录:网络安全风险应对与行业协同策略探讨

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅成为科技领域的热点新闻&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件&#xff0c;源于美国电脑安全…

mysql高阶语句:

mysql高阶语句&#xff1a; 高级语法的查询语句&#xff1a; select * from 表名 where limitsdistinct 去重查询like 模糊查询 排序语法&#xff1a;关键字排序 升序和降序 默认的排序方式就是升序 升序&#xff1a;ASC 配合order by语法 select * from 表名…

socket和websocket区别

Socket和‌WebSocket的主要区别在于它们的定义、功能和应用场景。 定义与功能&#xff1a; Socket 是一个系统调用接口&#xff0c;它允许应用程序通过TCP/IP协议进行网络通信。Socket本身不是协议&#xff0c;而是一组接口&#xff0c;用于使用TCP/UDP等传输层协议。‌12WebSo…

Memcached的冗余机制与节点失效应对策略

Memcached的冗余机制与节点失效应对策略 引言 Memcached是一种高性能的分布式内存对象缓存系统&#xff0c;用于加速动态Web应用程序&#xff0c;减轻数据库负载。然而&#xff0c;在分布式环境中&#xff0c;节点失效和数据丢失是常见的挑战。本文将通过具体代码示例&#x…

Python爬虫掌握-----4实战(爬取视频)

我们使用爬虫时难免会遇到爬取视频的情况&#xff0c;其实爬取图片视频&#xff0c;内容都是一样的。这里以b站视频为例。 一、开始 1.找到url&#xff0c;请求url 防盗链&#xff0c;需要写在UA伪装中 正常的三步&#xff1a; 1.url 2.requests请求 3.UA伪装 import req…

docker基于外部缓存加速构建方案

开启外部缓存 http://your_apt_cacher_ng_server:3142 是一个示例 URL&#xff0c;表示需要设置的 apt-cacher-ng 代理服务器的地址。apt-cacher-ng 是一个本地代理服务器&#xff0c;可以缓存从官方 APT 仓库下载的软件包&#xff0c;从而加速后续的下载过程&#xff0c;并减…

linux c 递归锁的介绍

递归锁的递归特性确实只是对于持有锁的线程。当一个线程获取了递归锁后&#xff0c;它可以多次重复获取该锁&#xff0c;而不会导致自身阻塞或死锁。这是递归锁的重要特点&#xff0c;它允许同一个线程在已经持有锁的情况下&#xff0c;再次获取相同的锁。 然而&#xff0c;对…

Zabbix基本介绍

文章目录 一、监控为什么需要监控需要监控什么Zabbix使用场景及系统概述zabbix介绍Zabbix功能Zabbix架构Zabbix术语 二、部署安装编译安装 一、监控 为什么需要监控 监控功能 在需要的时刻&#xff0c;提前预警即将出问题,避免故障发生。实时监控系统和业务,当出问题之后&am…

在本地远程访问云Linux服务器部署的tomcat管理控制台

样例: 我们将创建一个 SSH 隧道&#xff0c;将本地计算机的端口映射到远程服务器的端口,以达到在本地的windows系统中访问云Linux中tomcat的管理控制台的目的 1.打开终端,输入以下字段 ssh -L 8080:localhost:8080 userserver_ip 其中各项代表的值为: -L [local_port]:[remo…

Android11 framework 禁止三方应用通过广播开机自启动-独立方案

之前的文章Android11 framework 禁止三方应用开机自启动记录了我调试Android11应用自启动限制的全过程&#xff0c;但是之前的方案感觉还能再研究&#xff0c;所以有了这一篇文章。 这一篇文章主要探讨Android11上&#xff0c;以广播来进行自启动的应用的限制&#xff0c;极个别…

数据库安全:MySQL安全配置,MySQL安全基线检查加固

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…