1.背景
最近在学习和研究k8s,里面有用到docker。刚好为了回顾下docker相关知识。我实操了下基于.Net 8.0的docker项目实战。本文主要介绍了在centos 7.9安装docker,并将.net 8.0发布到centos,并生成docker镜像,最后run起来的过程。这是一个记忆的过程,比较简单,好上手。
2.Docker部署WebAPI项目。
2.1 .Net 8.0 WebAPI项目准备
2.2 新增DockerController
代码如下:
using Microsoft.AspNetCore.Mvc;
namespace Docker_WebAPI.Controllers
{
[ApiController]
[Route("[controller]/[action]")]
public class DockerController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public DockerController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetDocker")]
public string GetDocker()
{
return $"Docke部署成功:{DateTime.Now.ToString("yyyyy-MM:dd HH:mm:ss")}";
}
}
}
3. 环境准备
3.1 准备一台虚拟机。192.168.126.179 Centos7.9
3.2 主机运行-VMware Workstation3
3.3 主机连接:192.168.126.179-root@docker:
使用工具:MobaXterm 进行远程链接虚拟机192.168.126.179
4. 安装docker
MobaXterm 远程链接虚拟机192.168.126.179后,输入下列命令
1、安装docker仓库
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2、安装docker
yum -y install docker-ce
3、启动docker
systemctl enable docker
systemctl start docker
4、查看docker运行状态
systemctl status docker
5. 部署步骤:
5.1 发布
5.2 上传
新建目录 /root/dockerwebapi ,用来存放 发布后的项目文件
cd /root
mkdir dockerwebapi
将4.1发布的publish文件夹上传到 /root/dockerwebapi
5.3 生成镜像
docker只认识镜像,不认识dll。所以这里我们需要加工处理下,将dll文件打包封装起来,这样就做出了镜像;
生成镜像,关键在于dockerDockerfile文件,这是一个配置文件,会根据这个配置去生成镜像。
定位到目录: /root/dockerwebapi
touch Dockerfile
vim Dockerfile
vim编辑,输入下面的内容 FROM mcr.microsoft.com/dotnet/aspnet:8.0.0 WORKDIR /publish EXPOSE 80 EXPOSE 443 coPY publish/ /publish ENV ASPNETCORE_URLS http://+:80 ENTRYPOINT ["dotnet","Docker_WebAPI.dll"]
注意:ENTRYPOINT ["dotnet","Docker_WebAPI.dll"]里面的Docker_WebAPI.dll是我项目的dll。项目不一样名字就不一样。这里请用实际项目的dll名称哦
文件生成后, 如下图
最后,输入下列生成镜像的命令
docker build -t dockerwebapi .
输入下列命令,验证是否成功生成镜像:
docker images
可以发现有镜像dockerwebapi,操作是成功的。
5.4 部署项目
输入下列命令,将镜像运行起来
docker run -d -P dockerwebapi
#-d:后台运行 -P:暴露端口给客户端访问
输入下列命令。查看运行的进程。方便定位信息
docker ps
经过上面的操作,我们看到镜像是成功执行了,并且地址是:http://192.168.126.179:32769/Docker/GetDocker;和 https://192.168.126.179:32768/Docker/GetDocker;
验证效果,打开浏览器,输入: http://192.168.126.179:32769/Docker/GetDocker
注意:这里只有http开头的地址是可以访问的。https访问不了,应该是没部署ca证书。
6.结束
至此,就完成了实操。我理解docker就是轻量的虚拟机,我们简单记忆为用来发布项目的地方,只是这个docker支持弹性扩缩,方便容器编排管理,解放了生产力,提高效率了。