hao1nan 发表于 2017-12-6 23:12:18

Docker+.Net Core 的那些事儿-2.创建Docker镜像

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



docker pull microsoft/dotnet
2.创建一个.net core项目,并发布
  在上篇文章结尾建立的工作目录下,执行



# dotnet new mvc -o hwapp  //创建一个asp.net core mvc程序
# cd hwapp
# dotnet restore  //还原nuget包
  执行



# 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();
    }
  }
}
  保存后执行



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

3.创建Dockerfile并建立镜像
  在publish文件夹下,执行



# touch Dockerfile
# chmod 777 Dockerfile
# 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是有用的,执行以下命令



# cd /etc/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.创建容器并运行
页: [1]
查看完整版本: Docker+.Net Core 的那些事儿-2.创建Docker镜像