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

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

docker pull microsoft/dotnet

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

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

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

执行

[[email protected] 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();
    }
  }
}

保存后执行

[[email protected] hwapp]# dotnet publish   //发布程序

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

3.创建Dockerfile并建立镜像

在publish文件夹下,执行

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

[[email protected] publish]# cd /etc/sysconfig[[email protected] 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.创建容器并运行

时间: 2024-10-30 13:03:42

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

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

1.根据镜像运行容器 上篇文章建立了一个镜像: 我们以此开始,执行以下命令: docker run -d -p 5000:5000 hwapp:latest 如果返回以上结果表示建立成功. 此时如果你安装的是桌面版的centos,可以在centos中打开浏览器访问http://localhost:5000,看是否可以正常访问. 如果你是min版,可以执行以下命令: curl http://localhost:5000 如果返回.net core html内容,表示成功建立. 至此,整个docke

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

1.下载centos 地址:https://www.centos.org/download/ 我使用的是DVD ISO,这么做的目的是为了在之后的docker填坑的路上,方便使用centos中Firefox来确定docker中的app能否正常访问. 当然,如果使用curl命令也是可以测试的,这就看各位的喜好了.我安装的centos版本为7,不同版本可能稍有不同,我会尽量在过程中注明. 下载完毕后,需要对系统进行一些配置: 1)关闭selinux selinux是一个非常坑的东西,它会使很多跟网络

docker学习笔记(四)——Dockerfile创建自定义镜像

用Dockerfile创建docker,注意下,建议在空文件夹下创建 本篇我们将完成: 1.用Dockerfile创建docker 2.端口映射 3.卷挂载,即docker目录挂载到宿主机 1.用Dockerfile创建docker 在/opt/centos/目录下,创建Dockerfile # Centos based container with Java and Tomcat FROM 127.0.0.1:5000/centos:v2    #镜像源,这里为私有 MAINTAINER ja

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

1.通过docker run -v命令映射工作目录 通过一系列上述操作,我们可以发现我们的发布是基于镜像的,也就是说,在后期的迭代过程中,如果有些代码修改,我们就不得不删除旧的容器和镜像,dotnet重新发布,再按照Dockerfile重新建立镜像和容器并运行,这种操作很蛋疼的,那有什么办法可以解决这个问题呢,这就是本篇文章要讲的内容. 在准备工作之后,执行以下操作: [[email protected] publish]# vim Dockerfile 删除COPY . /publish这句,

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

1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方便与高效.同时,Docker借助强大的镜像技术,让应用的分发.部署与管理变得史无前例的便捷.然而,Docker毕竟是一项较为新颖的技术,在Docker的世界中,用户并非一劳永逸,其中最为典型的便是Docker的网络问题. 毋庸置疑,对于Docker管理者和开发者而言,如何有效.高效的管理Docker

.Net Core(完) 创建Docker镜像

使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器可以随意移动到其它计算机中运行.Docker可以很好得保证应用之间的互相隔离,同时Docker的进程跑在原生操作系统上,不会像虚拟机哪样性能差.Docker还能更好地满足网站对于可伸缩性的要求,可以按需自动扩容,同时docker还具有"即抛"的特性,访问高峰过去后也可以减少容器的数量. 一

Docker的使用初探(二):Docker与.NET Core的结合

目录 Docker的使用初探(二):Docker与.NET Core的结合 添加Dockefile 1. 在创建项目时添加 2. 手动添加 3. 容器业务流程协调控制程序支持 Dockefile语法 Docker项目调试 仅添加文件的方式 容器业务流程协调控制程序支持 Docker的使用初探(二):Docker与.NET Core的结合 在二者的结合上,微软官方给予了很大的支持,从官方发布的一些文章和VS 2017在建立.NET Core项目时自带的Docker选项都可以看出来,这也与Core的

ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)

原文:ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识) 前言 在上篇文章中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或者 macOs 中部署的 dotnet 程序创建一个守护进程,来保证我们的程序在异常或者是电脑重启的时候仍然能够正常访问. 如果你以后用准备使用 asp.net core来开发项目的话,程序并且部署到 Linux 上的话,那么此篇文章你值得收藏. 如果你觉得对你有帮助的话

ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)

原文:ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署) 按网上的做法用dockerfile文件是可以弄得出来的,http://www.docker.org.cn/article/119.html, 不过我想把网站文件放在外面硬盘目录,再映射进去,这样只要在硬盘目录中修改CSHTML文件后重启一下容器就行了 步骤如下: 1. vs中建立ASP.NET CORE网站,类名为coreweb1 2. 发布到c:\temp\coreweb1目录 3. 先在本地CMD