使用Docker部署.Net Core项目

时间:2020-12-21 00:15:46   收藏:0   阅读:49

Docker理论基础

Docker工作需要容器和镜像,它们是docker的基石

什么是容器

技术分享图片

什么是镜像

常用docker命令

编写Dockerfile创建自定义容器

dockerfile只需要简单理解为描述docker镜像规则的描述文件

FROM mcr.microsoft.com/dotnet/core/sdk:3.1
COPY dist /app
WORKDIR /app
#指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "ExampleApp.dll"]

技术分享图片

  1. 打包asp.net core项目
    技术分享图片

  2. 将包压缩并发送到linux服务器中,并解压
    技术分享图片

  3. 压缩后文件如下:
    技术分享图片

  4. 执行创建自定义容器命令docker build [打包文件的路径] [-t 指定生成容器的名称] [-f 指定要执行的dockerfile名称]
    ps:在docker里面镜像的名称不能有大写,只能用小写
    技术分享图片

容器创建

上面我们进行了镜像的创建,下面学习容器的创建

  1. 创建容器docker create -p 外部端口:容器内部端口 -name 容器名 所要创建的容器(镜像名)
    技术分享图片
    Ps:注意 这里有两个坑 :
    一、部署asp.net core项目时,我们kestrel默认监听的是5000端口,并且只对允许使用localhost访问(即只有本机能访问),我们可以在program中如图中设置,外部计算机才能正常访问:技术分享图片
    二、在项目部署到docker中时,在dockerfile中我们虽然声明监听的端口是80,但是我们kestrel监听的确是5000端口,此时,我们在宿主机映射端口时候,应该以kestrel监听的端口为准,否则将无法成功访问网页
    技术分享图片

  2. 启动容器 docker start 容器名
    技术分享图片

  3. 创建容器并运行 docker run [-d(表示后台运行)] [-p 宿主机端口:容器服务端口] [--rm(表示容器stop时,自动删除容器)] --nmae 容器名 镜像名

  4. 停止容器运行 docker stop 容器名docker kill 容器名(建议少用)

  5. 查看容器运行日志 docker logs [-f(表示实时查看日志)] 容器名称

操作正在运行容器

  1. 复制文件到容器内部之中

原文:https://www.cnblogs.com/deehuang/p/14165971.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!