zoukankan      html  css  js  c++  java
  • 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.创建容器并运行

  • 相关阅读:
    使用javap分析Java的字符串操作
    使用javap深入理解Java整型常量和整型变量的区别
    分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型
    Java动态代理之InvocationHandler最简单的入门教程
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
  • 原文地址:https://www.cnblogs.com/kakura/p/7220183.html
Copyright © 2011-2022 走看看