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
-
使用
yum-config-manager
:这是yum-utils
包中的一个工具,用于管理yum
的仓库配置。它允许你添加、禁用或启用仓库,而无需直接编辑仓库配置文件(通常位于/etc/yum.repos.d/
目录下)。 -
添加Docker CE仓库:通过指定
--add-repo
选项和Docker CE的仓库URL(在这个例子中是https://download.docker.com/linux/centos/docker-ce.repo
) -
仓库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
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"]
需要修改的地方
-
项目路径:
- 确保在正确的目录中执行 Docker 构建命令。该目录应该包含发布后的应用程序文件。
-
DLL 文件名称:
- 将
YourAppName.dll
修改为您的 .NET Core 应用程序的实际 DLL 文件名。
- 将
4.构建和运行 Docker 镜像
步骤 4.1:创建项目目录并进入目录
- 确保在正确的目录中
cd /root/dotnetapp/NewsWebsite
- 构建 Docker 镜像
sudo docker build -t newswebsiteapp .
newswebsiteapp是项目名,这个自定义
- 运行 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
。