1 创建一个文件夹(app), 将项目发布后的文件放入该文件夹中 并且创建Dockerfile文件

2 打开Dockerfile文件,编辑一下内容

  

#基于 `microsoft/dotnet:1.0.-core` 来构建我们的镜像
#FROM mcr.microsoft.com/dotnet/core/sdk:2.2
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 #拷贝项目app文件夹中的所有文件到 docker容器中的app文件夹中
COPY . /app #设置接下来的工作路 `/app` 文件夹,可以设置多次,最后一个即容器启动默认的工作目录
WORKDIR /app #设置Docker容器对外暴露8003端口
EXPOSE #使用`dotnet testmvc.dll`来运行应用程序 CMD ["dotnet", "WebCore.dll"]

说明

  • FROM 表示项目所要依赖的环境

  • COPY . /app:将当前目录下的所有文件(,都拷贝进入 image 文件的/app目录。

  • WORKDIR /app:指定接下来的工作路径为/app,可以设置多次,最后一个即容器启动默认的工作目录。WORKDIR指令设置Dockerfile中的任何RUN,CMD,ENTRPOINT,COPY和ADD指令的工作目录。如果WORKDIR指 定的目录不存在,即使随后的指令没有用到这个目录,都会创建。

  • EXPOSE 5000:将容器 5000 端口暴露出来, 允许外部连接这个端口。貌似没啥用。设置不设置都可以

  • CMD 它表示容器启动后默认自动执行的命令

mcr.microsoft.com/dotnet/core/sdk:2.2 =>此示例将此映像用于生成应用。 此映像包含带有命令行工具 (CLI) 的 .NET Core SDK。 此映像对本地开发、调试和单元测试进行了优化。 为开发和编译而安装的工具使其成为一个相对较大的映像。
主要是用于编译环境,如果你的镜像文件用都是发布后的dll不需要配置这个依赖

mcr.microsoft.com/dotnet/core/aspnet:2.2 =>此示例将此映像用于运行应用。 此映像包含 ASP.NET Core 运行时和库,并针对在生产中运行应用进行了优化。 此映像专为部署和应用启动的速度而设计,相对较小,因此优化了从 Docker 注册表到 Docker 主机的网络性能。 仅将运行应用所需的二进制文件和内容复制到容器。 已准备运行内容,以此实现从 Docker run 到应用启动的最快时间。 Docker 模型中不需要动态代码编译

3 创建镜像,输入Docker命令:

docker build -t aspnetapp .

-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

如果运行成功,就可以看到新生成的镜像。

4 创建容器:

   docker run -it -p 5002:80 --name aspnetcontainer aspnetapp

-p 5002:80 表示将Docker主机的5002端口和Docker容器的80端口进行关联映射,即,外部访问使用5002端口,容器内部使用80端口,即 HTTP服务端口。

5 Volume挂载:

  为了能够让容器的数据保存(持久化),docker提出Volume的概念。简单来说,就是将宿主的文件挂载到容器上的某个文件上,当容器操作被挂载的文件时,就相当于操作宿主的文件。

  可以通过-v参数指定(注:注意冒号前后的内容) docker  run  -v  /host/path:/some/path ,此时会在容器中创建/some/path这样一个目录文件,如果该目录文件存在,会将文件里的内容清空

  eg:docker run -d -p 5002:80 --name netcoreapp -v /opt/netcoreapp/logs:/app/logs  netcoreapp 

6 进入容器

    docker exec -it 容器名字或者Id  bash  eg:docker exec -it netcoreapp bash

  使用 exit 退出容器

参考网址:

  http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

  https://www.cnblogs.com/flame7/p/9210986.html

aspnet core in docker的更多相关文章

  1. .NET core for docker

    本文描述下 .net core 在 docker 里面的玩法 首先按照官方文档先 拉取镜像 docker pull microsoft/dotnet:latest 然后就有了 dotnet 这个运行时 ...

  2. [翻译] 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据

    原文地址:http://www.dotnetcurry.com/aspnet/1354/elastic-search-kibana-in-docker-dotnet-core-app 想要轻松地通过许 ...

  3. 使用ASP.NET Core实现Docker的HealthCheck指令

     写在前面 HealthCheck 不仅是对应用程序内运行情况.数据流通情况进行检查, 还包括应用程序对外部服务或依赖资源的健康检查. 健康检查通常是以暴露应用程序的HTTP端点的形式 实施,可用于配 ...

  4. 自动部署Asp.Net Core到Docker

    原文链接:个人博客:自动部署Asp.Net Core至Docker 本文简介 最近在开发一个管理系统,代码框架是用的前后台分离的方式 后台使用的是Asp.Net Core平台,开发所有业务,向前台提供 ...

  5. 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  6. 【AspNet Core】Nuget代理网站

    因为访问Nuget太慢,在Dotnet Core RC2发布前,我就基于Asp.Net做了一个Nuget代理网站 这是网站地址:http://nuget.lzzy.net/ Nuget源:http:/ ...

  7. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  8. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  9. AspNet Core 初步认识

    Core 的出现对我我没有很大的影响,当时在Core要发布的时候听到周围的人再聊再谈,我没有去太多关注,就是一个屌丝开发人员. 直到又一次偶然见到一位特别喜欢.net的老开发人员谈起Core时落泪了, ...

随机推荐

  1. Java中的集合详解及代码测试

    1:对象数组 (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection) (1)集合的由来 我们学习的是Java -- 面向对象 ...

  2. JVM 运行时数据区域划分

    目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...

  3. Java JNA (四)—— void**、void*、char**、char*、int*等类型映射关系及简单示例

    ByReference类有很多子类,这些类都非常有用. ByteByReference.DoubleByReference.FloatByReference. IntByReference.LongB ...

  4. OpenVINO 安装及使用

    安装 https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html 使用 文档 ...

  5. linux下的mongodb的备份与恢复

    mongodb的备份有两种方式: 1.直接拷贝数据目录下的一切文件 2.使用mongodump方式 3.主从复制:http://www.cnblogs.com/huangxincheng/archiv ...

  6. 【学习】009 NIO编程

    NIO概述 什么是NIO? Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式. Ja ...

  7. 黑客已经瞄准5G网络,如何防止LTE网络攻击?

    黑客是如何攻击5G网络?即使5G进行大规模应用,LTE技术会被淘汰吗?那么我们应该如何防止LTE网络攻击? 5G-网络黑客 即将推出的5G网络也可能容易受到这些攻击,来自中国网络安全研究人员表示,尽管 ...

  8. Python---基础----数据类型的内置函数(主要介绍字符串、列表、元组、字典、集合的内置函数)(二)

    2019-05-24 -------------------------------- 一. # splitlines()    以换行切割字符串s = '''日照香炉生紫烟\n疑是银河落九天\n飞流 ...

  9. Python---基础---dict_tuple_set

    2019-05-21 ------------------------ help(tuple) ------------------------- Help on class tuple in mod ...

  10. 理解性能的奥秘——应用程序中慢,SSMS中快(4)收集解决参数嗅探问题的信息

    ---从计划缓存中直接获取查询计划和参数: ), ) SELECT @dbname = 'hydee_连锁', @procname = 'dbo.p_select_ware'; WITH baseda ...