1.从store.docker.com获取.net core镜像

docker pull microsoft/dotnet

2.创建一个.net core项目,并发布

在上篇文章结尾建立的工作目录下,执行

[root@localhost docker_demo]# dotnet new mvc -o hwapp  //创建一个asp.net core mvc程序
[root@localhost docker_demo]# cd hwapp
[root@localhost hwapp]# dotnet restore  //还原nuget包

执行

[root@localhost hwapp]# vim Program.cs

修改Program.cs代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
namespace hwapp
{
  public class Program
  {
    public static void Main(string[] args)
    {
      var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseUrls("http://*:5000")  //注意此处,需要添加端口绑定
        .UseStartup<Startup>()
        .Build();
      host.Run();
    }
  }
}

保存后执行

[root@localhost hwapp]# dotnet publish   //发布程序

运行完毕后,会在bin/Debug/netcoreapp1.1/目录下生成publish文件夹。

3.创建Dockerfile并建立镜像

在publish文件夹下,执行

[root@localhost publish]# touch Dockerfile
[root@localhost publish]# chmod 777 Dockerfile
[root@localhost publish]# vim Dockerfile

向Dockerfile中写入以下内容:

 #基于 `microsoft/dotnet` 来构建我们的镜像
FROM microsoft/dotnet #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
COPY . /publish #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish #设置Docker容器对外暴露5000端口
EXPOSE 5000 #使用`dotnet hwapp.dll`来运行应用程序 CMD ["dotnet", "hwapp.dll", "--server.urls", "http://*:5000"]

:wq保存。之后按照Dockerfile来建立镜像:

docker build -t hwapp .  //注意后面那个点,代表全部

执行

docker images

可以看到一个基于dotnet的属于自己的镜像。

下篇文章会介绍如何创建容器并运行app。

QA:常见问题及解决办法

1.docker pull 时报网络问题错误或者下载速度过慢,例如:

A:使用国内docker加速器,比如阿里云或DaoCloud,下面以DaoCloud为例:

注册一个账号,之后进入控制台,点加速器:

进入之后会得到一个命令,但是千万不要放到centos中执行!!!命令如下

但是后面的url是有用的,执行以下命令

[root@localhost publish]# cd /etc/sysconfig
[root@localhost sysconfig]# vim docker

在OPTIONS中添加参数:

--registry-mirror=http://xxxxxxxx.m.daocloud.io

其中url为加速器中提供的url。

重启docker服务,重新执行docker pull即可。

PS:如果执行了DaoCloud提供的命令,则可能会报:

这个错误,这个时候通过安装docker-engine即可解决(本人没亲自试过...)

还有如果在OPTIONS中的参数写错了,也是会报这个错误的。

2.执行docker命令时报以下错误:

A:重启docker服务即可。

service docker restart

Docker+.Net Core 的那些事儿-3.创建容器并运行

Docker+.Net Core 的那些事儿-2.创建Docker镜像的更多相关文章

  1. Docker+.Net Core 的那些事儿-3.创建容器并运行

    1.根据镜像运行容器 上篇文章建立了一个镜像: 我们以此开始,执行以下命令: docker run -d -p 5000:5000 hwapp:latest 如果返回以上结果表示建立成功. 此时如果你 ...

  2. Docker+.Net Core 的那些事儿-1.准备工作

    1.下载centos 地址:https://www.centos.org/download/ 我使用的是DVD ISO,这么做的目的是为了在之后的docker填坑的路上,方便使用centos中Fire ...

  3. Docker+.Net Core 的那些事儿-4.还有这种操作!?

    1.通过docker run -v命令映射工作目录 通过一系列上述操作,我们可以发现我们的发布是基于镜像的,也就是说,在后期的迭代过程中,如果有些代码修改,我们就不得不删除旧的容器和镜像,dotnet ...

  4. Docker 学习笔记 (一)Dockerfile 创建本地镜像

    一.测试环境 OS version: CentOS Linux release 7.5.1804 (Core) docker cluster : master 1 + data node 4 dock ...

  5. docker创建nginx镜像

    注意:此处不是用的dockerfile创建的镜像,只是用来搞一搞 首先你的系统里面要安装docker,这里就不重复介绍了,可以看之前的文章: 然后再搞一个基础镜像 docker pull regist ...

  6. 标记,上传并下载自己创建的镜像 image

    1. 首先使用 docker images 查看已有镜像: 2. 获得 docker-whale 的 IMAGE ID,然后为 docker-whale 镜像 image 打上标签 Tag.使用命令: ...

  7. Docker源码分析(六):Docker Daemon网络

    1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...

  8. .Net Core(完) 创建Docker镜像

    使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器 ...

  9. .Net Core创建Docker镜像

    1..Net Core项目[Lails.Server.Demo]发布到目录下Lails.Server.Demo\bin\Release\netcoreapp2.1\publish 2.上面目录下新建文 ...

随机推荐

  1. 提高ASP.NET网站性能的方法

    http://www.360doc.com/content/14/0705/18/7662927_392224856.shtml   Asp.NET有许多秘密,当你了解了这些秘密后,可以使得你的ASP ...

  2. 《C++ Primer Plus》第4章 学习笔记

    数组.结构和指针是C++的3中符合类型.数组可以在一个数据对象中存储多个同种类型的值.通过使用索引或下标,可以访问数组中各个元素.结构可以将多个不同类型的值存储在同一个数据对象中,可以使用成员关系运算 ...

  3. ios UITableView多选删除

    第一步, - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath ...

  4. [Java][Tomcat]在eclipse中运行tomcat报的一个错误

    2008-11-9 16:27:59 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule]{Se ...

  5. HDU 3450 Counting Sequences(线段树)

    Counting Sequences Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Other ...

  6. CH5201 数组组合【01背包】

    5201 数字组合 0x50「动态规划」例题 描述 在N个数中找出其和为M的若干个数.先读入正整数N(1<N<100)和M(1<M<10000), 再读入N个正数(可以有相同的 ...

  7. Hadoop伪分布安装详解(一)

    注:以下截图针对Ubuntu操作系统,对Centos步骤类似.请读者选择不同镜像即可. 第一部分:VMware WorkStation10 安装 1.安装好VMware10虚拟机软件并下载好Ubunt ...

  8. ubuntu mysql 数据库备份以及恢复[命令行]

    之所以加了个ubuntu,其实也没什么,就是恢复数据库的时候给幽默了一下,所以特地加上.   写在前面:一直很想好好的学linux命令行.shell编程,幻想自己能够通过学习进而成为命令行高手,游刃于 ...

  9. python基础-第十一篇-11.1JavaScript基础

    JavaScript是一门解释型编程语言,主要是增强html页面的动态效果 JavaScript是有三部分组成:ECMAScript.BOM.DOM 单行注释//   多行/*   */(必须是scr ...

  10. mac配置python自然语言处理环境

    一.nltk安装 Ⅰ.工具安装步骤 1.根据python版本从 https://pypi.python.org/pypi/setuptools 下载对应版本的setuptools.然后,在终端下运行, ...