ToB企服应用市场:ToB评测及商务社交产业平台

标题: 如何通过docker容器将ASP.NET Core站点摆设到CentOS [打印本页]

作者: 大连密封材料    时间: 2024-11-25 07:28
标题: 如何通过docker容器将ASP.NET Core站点摆设到CentOS
上一篇我们讲了如何将asp.net core摆设到linux系统上,这次我们以docker容器的方式把我们的站点摆设到linux系统中
使用Docker来摆设,其实比我们通例的摆设方式更简朴。因为Docker的存在,本来就是把复杂的事情简朴化,让我们可以“一次摆设,处处可用”。
如果你是使用windows操作系统,起首记得先安装好 docker for windows,不清楚怎么安装可以自行查阅资料。
创建dockerfile

在上一次我们创建的asp.net core web项目中,我们在发布的目标文件夹根目次中创建一个Dockerfile的文件(就是一个文本文件没有扩展名),具体内容如下:
  1. #从docker hub中拉取asp.net runtime基础镜像FROM mcr.microsoft.com/dotnet/core/aspnet:3.1#将当前目录下的文件,拷贝到容器中的app目录下COPY . /app #设置app为工作目录WORKDIR /app#暴露TCP端口5100EXPOSE 5100/tcp#设置程序启动入口函数库名,第一个参数表示执行命令的程序名,第二个函数表示带有主函数入口文件名ENTRYPOINT ["dotnet","LinuxWebForTest.dll"]
复制代码
特别留意:程序入口函数库文件名,一定是以dll作为入口函数库,不能以exe文件或者不带扩展名的文件名称作为入口函数库
如果入口函数指定错误,则会出现以下提示:
  1.   It was not possible to find any installed .NET Core SDKs
  2.   Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
  3.   https://aka.ms/dotnet-download  
复制代码
通过Dockerfile构建镜像

1.我们打开asp.net core web的根目次(也就是dockerfile所在目次),在资源管理器上方输入cmd下令,打开cmd下令窗口
2.登录docker仓库服务器,以前次构建的私有仓库为例

  1.    > docker login 192.168.1.110:5000   //之前已经登录过,所以直接从缓存里面查找用户和密码信息,自动登录   Authenticating with existing credentials...   Login Succeeded   //如果没有登录过,输入用户名,密码进行登录。可参见:https://huchengv5.github.io//post/%E6%90%AD%E5%BB%BAdocker%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93.html 中的登录部分。
复制代码
3.构建镜像

  1.    > docker build -t 192.168.1.110:5000/aspnetcoreapp:v1 .   //执行过程   Sending build context to Docker daemon  4.631MB   Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1   ---> bc877ac43e02   Step 2/5 : COPY . /app   ---> eaa31c882445   Step 3/5 : WORKDIR /app   ---> Running in f8db2aff9c73   Removing intermediate container f8db2aff9c73   ---> 97f999072fc2   Step 4/5 : EXPOSE 5100/tcp   ---> Running in ddeb5c939269   Removing intermediate container ddeb5c939269   ---> fbabdcf7447b   Step 5/5 : ENTRYPOINT ["dotnet","LinuxWebForTest.dll"]   ---> Running in 0d60745c61ea   Removing intermediate container 0d60745c61ea   ---> d2517be5dbd8   Successfully built d2517be5dbd8   Successfully tagged 192.168.1.110:5000/aspnetcoreapp:v1
复制代码
我们可以通过docker images来查看我们构建的镜像。
  1. > docker images
  2.    REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
  3.    192.168.1.110:5000/aspnetcoreapp       v1                  26070ec7870f        18 hours ago        212MB
  4.    linuxwebfortest                        dev                 8485a72fcf26        25 hours ago        207MB
  5.    docker101tutorial                      latest              c57c605dedaa        3 days ago          25.1MB
  6.    192.168.1.110:5000/python              test                f4df7f234e59        7 days ago          78.9MB
  7.    python                                 alpine              f4df7f234e59        7 days ago          78.9MB
  8.    mcr.microsoft.com/dotnet/core/aspnet   3.1                 bc877ac43e02        8 days ago          207MB
  9.    mcr.microsoft.com/dotnet/core/aspnet   3.1-buster-slim     bc877ac43e02        8 days ago          207MB
  10.    node                                   12-alpine           7a48db49edbf        4 weeks ago         88.7MB
  11.    nginx                                  alpine              89ec9da68213        4 weeks ago         19.9MB
  12.    registry                               latest              708bc6af7e5e        4 months ago        25.8MB
复制代码
下令阐明:
  1.    docker build 构建镜像   -t (tag) 指定镜像tag   192.168.1.110:5000 镜像指定的仓库地址,会作为镜像名称的一部分,但这部分不能乱填   aspnetcoreapp 镜像名称,可以任意填写   v1 对应的标签,这里是表示仓库 192.168.1.110:5000 下的 aspnetcoreapp 镜像的 v1 版本   最后面有个 . ,表示的是当前目录下的dockerfile文件,也可以通过 -f 显示指定dockerfile的文件路径
复制代码
4.推送镜像
镜像构建好后,我们需要将镜像推送到我们的私有仓库中

  1.    > docker push 192.168.1.110:5000/aspnetcoreapp:v1
复制代码
根本语法:docker push <镜像完整名称>
5.启动容器
镜像推送到服务器以后,我们需要进入到服务器,将镜像运行到容器中。(镜像就相称于是原始文件,容器可以理解为加载镜像文件后运行的程序实例)
  1.    docker run -p 8000:5100 192.168.1.110:5000/aspnetcoreapp:v1
复制代码
执行成功结果如下: 

  1. warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
  2.          Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
  3.    warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
  4.          No XML encryptor configured. Key {e0fd53e8-940f-4e70-b192-2b16c0f684dc} may be persisted to storage in unencrypted form.
  5.    warn: Microsoft.AspNetCore.Server.Kestrel[0]
  6.          Overriding address(es) 'http://+:80'. Binding to endpoints defined in UseKestrel() instead.
  7.    info: Microsoft.Hosting.Lifetime[0]
  8.          Now listening on: http://0.0.0.0:5100
  9.    info: Microsoft.Hosting.Lifetime[0]
  10.          Application started. Press Ctrl+C to shut down.
  11.    info: Microsoft.Hosting.Lifetime[0]
  12.          Hosting environment: Production
  13.    info: Microsoft.Hosting.Lifetime[0]
  14.          Content root path: /app
复制代码
参数阐明:

  1.    docker run:启动一个容器实例   -p 8000:5100:将本地端口8000映射到容器端口5100   192.168.1.110:5000/aspnetcoreapp:v1:表示完整的镜像路径
复制代码
我们也可以通过 -d 参数启动后台运行,也可以通过设置 --restart=always 使其主动启动,小同伴们可以自行实行下。
6.使用欣赏器,外部验证是否可以正常访问
使用欣赏器打开:http://192.168.1.110:8000。如果能正常打开,那么恭喜你已经成功了。
Docker的最简易的摆设就到这里了,根本思路有了,更复杂点的摆设也会有个根本的思路了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4