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


    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中写入以下内容:

     1 #基于 `microsoft/dotnet` 来构建我们的镜像
     2 FROM microsoft/dotnet
     3 
     4 #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中  
     5 COPY . /publish
     6 
     7 #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
     8 WORKDIR /publish
     9 
    10 #设置Docker容器对外暴露5000端口
    11 EXPOSE 5000
    12 
    13 #使用`dotnet hwapp.dll`来运行应用程序
    14 
    15 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.创建容器并运行

  • 相关阅读:
    C# .net页面乱码
    Spring Cloud 微服务三: API网关Spring cloud gateway
    Spring Cloud 微服务二:API网关spring cloud zuul
    Spring Cloud 微服务一:Consul注册中心
    Log4j2升级jar包冲突问题
    Log4j2配置
    opensearch空查询
    阿里云Opensearch数据类型
    Spring mybatis自动扫描dao
    【EDAS问题】轻量级EDAS部署hsf服务出现找不到类的解决方案
  • 原文地址:https://www.cnblogs.com/kakura/p/7220183.html
Copyright © 2020-2023  润新知