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

1. 安装 Docker

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

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

cs 复制代码
sudo yum install -y yum-utils
cs 复制代码
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软件包。

cs 复制代码
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. 仓库URL :**https://download.docker.com/linux/centos/docker-ce.repo**是一个指向Docker CE仓库配置文件的URL。当你执行这个命令时,yum-config-manager会从该URL下载仓库配置文件,并将其保存到你的/etc/yum.repos.d/目录下。

步骤 1.3:安装 Docker CE

cs 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

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

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

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

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

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

cs 复制代码
sudo systemctl start docker
sudo systemctl enable docker

步骤 1.5:验证 Docker 安装

cs 复制代码
sudo docker -v

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

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

选择发布到文件夹

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

3. 创建 Dockerfile

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

cs 复制代码
mkdir dotnetapp 

cd dotnetapp

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

步骤 3.2:创建 Dockerfile

1. 创建或更新 Dockerfile

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

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

cs 复制代码
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'

模版:

cs 复制代码
# 使用官方的 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. 确保在正确的目录中
cs 复制代码
cd /root/dotnetapp/NewsWebsite
  1. 构建 Docker 镜像
cs 复制代码
sudo docker build -t newswebsiteapp .

newswebsiteapp是项目名,这个自定义

  1. 运行 Docker 容器
cs 复制代码
sudo docker run -d -p 8080:80 newswebsiteapp

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

5. 管理 Docker 容器

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

  • 查看运行的容器:

    cs 复制代码
    sudo docker ps
  • 停止一个容器:

cs 复制代码
​​​​​​​sudo docker stop <container_id>
  • 删除一个容器:

    cs 复制代码
    sudo docker rm <container_id>

开启端口:

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

1. 检查 firewalld 状态

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

cs 复制代码
sudo systemctl status firewalld

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

cs 复制代码
sudo systemctl start firewalld

2. 开放端口 5000为例

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

复制代码
cs 复制代码
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent

解释:

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

3. 重新加载 firewalld

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

cs 复制代码
sudo firewall-cmd --reload

4. 验证端口是否开放

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

cs 复制代码
sudo firewall-cmd --zone=public --list-ports

确保输出中包含 5000/tcp

相关推荐
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
lwprain2 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
肖永威4 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
tian2kong4 小时前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
Code_Artist4 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
mengao12344 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门4 小时前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student4 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
不是二师兄的八戒4 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php