.net core的跨平台有了Linux,不能没有docker……网上的系列文章一大推,特别是docker还有了中文官网:https://www.docker-cn.com/ 。上面说的很清楚了,这里只是操作记录。操作的环境是:Ubuntu 16.04、docker。

  一、参照官网安装docker,网址:https://docs.docker-cn.com/engine/installation/linux/docker-ce/ubuntu/

、sudo apt-get remove docker docker-engine docker.io
、sudo apt-get update
、sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
、curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
、sudo apt-key fingerprint 0EBFCD88
、sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
、sudo apt-get update
、sudo apt-get install docker-ce
、docker --help
、sudo docker info

  上面的网站中对上面的说明很详细,这里就不在说明了。

  二、安装microsoft/dotnet镜像

  1、拉去microsoft/dotnet(默认:latest) 命令:sudo docker pull microsoft/dotnet

  太利索了,一上来就报错了,他打击人了……查了一下,可以配置镜像加速。

  2、需改 /etc/docker/daemon.json 文件来配置镜像加速

  /etc/docker 都打不开,没有权限,看不到里面的文件,修改文件夹权限,命令:sudo chmod 777 /etc/docker  之后新建daemon.json 命令:sudo vi /etc/docker/daemon.json

  我去新建的daemon.json都访问不了,修改权限,命令:sudo chmod 777 /etc/docker/daemon.json    (备注:递归子文件夹  sudo chmod -R 777 /var/lib/docker)

  发现上面的锁已经没有了,可以修改daemon.json他了,输入以下内容:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

  重启一下docker,命令:sudo systemctl restart docker

  先运行以下hello world练练手,命令:sudo docker run hello-world  并查看以下镜像列表:sudo docker images

  现在放心了,拉取microsoft/dotnet应该没问题了吧!命令:sudo docker pull microsoft/dotnet   并查看一下现在的镜像:sudo docker images

  这次很顺利就下载下来了,下面我们利用这个镜像创建一个新的容器,执行命令:sudo docker run -it  microsoft/dotnet

// 参考http://www.runoob.com/docker/docker-run-command.html
docker run :创建一个新的容器并运行一个命令
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;

  之后我们查看了dotnet的版本,创建了一个“test1”目录,并在该目录下创建了一个MVC应用程序,查看其目录发现和非容器中创建没有什么区别,而且我们可以利用dotnet run运行该应用程序:

 

  随后在执行一遍 sudo docker run -it  microsoft/dotnet 命令,之后查看所有容器:sudo docker ps -a  发现基于microsoft/dotnet镜像有两个容器,也就是说每次执行 docker run,都会重新构造出新的互不影响的容器:

  三、在 Docker 容器中托管 ASP.NET Core

  1、在本地(win10)中使用dotnet命令:dotnet new mvc 新建一个MVC应用程序,并在根目录下新建文件“Dockerfile”,没有后缀名,输入以下内容:

FROM microsoft/dotnet:latest
WORKDIR /app
COPY bin/release/netcoreapp2./publish .
ENV ASPNETCORE_URLS http://0.0.0.0:80
ENTRYPOINT ["dotnet", "test1.dll"]

  2、发布该应用程序,命令:dotnet publish -c release

  3、将该应用程序拷贝到Ubuntu桌面

  4、构建程序镜像,命令:sudo docker build -t test1image . (这个点千万记得)

  5、运行刚生成的镜像,命令:sudo docker run -p 8080:80 --name test1c1 test1image

  6、查看镜像列表、容器列表

  7、查看Ubuntu IP地址(ifconfig),在本地(win10)查看一下程序运行情况

  8、输入ctrl+c停止应用程序

  9、查看容器列表(全部容器--包括停止的、启动的容器)

  10、重新启动容器“test1c1”,命令:sudo docker start test1c1

  网站又复活了……

  在docker中体验.net core 就到这里了,最后还有一个疑问就是进入microsoft/dotnet镜像之后运行的MVC应用程序(localhost:5000)可以访问吗?怎么访问?初次体验可能理解有偏差,如有了解的请不吝赐教,谢了!!!

  【2019-12-09更新】

  上面的链接地址(https://docs.docker-cn.com/engine/installation/linux/docker-ce/ubuntu/)打不开了,替换一下:https://docs.docker.com/install/linux/docker-ce/ubuntu/

在docker中初次体验.net core 2.0的更多相关文章

  1. 在ubuntu16.04中初次体验.net core 2.0

    .net core运行在Linux中的例子.文章已经很多了,看了一些之后也想体验一下,顺便记录一下…… 环境:win10 1709.它内置的Linux子系统(这里安装的是Ubuntu 16.04) 一 ...

  2. 在ubuntu16.04中再次体验.net core 2.0

    在上一篇文章中在ubuntu16.04中初次体验.net core 2.0 简单介绍了一下ubuntu中运行.net core 2.0.配置nginx反向代理以及安装supervisor守护进程……本 ...

  3. 记一次Docker中部署Asp.Net Core 3.0的踩坑过程

    最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...

  4. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  5. 丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  6. Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

  7. Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

  8. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  9. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

随机推荐

  1. jdk源码阅读笔记-Integer

    public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该 ...

  2. 基于ITextSharp插件在ASP.NET MVC中将图表导出为PDF

    样本: 在这个示例中,我们使用的是微软给我们提供的数据库,也就是家喻户晓的Northwind数据库.要下载Microsoft的免费样本Northwind数据库,您需要访问以下URL.下载Northwi ...

  3. 老司机心得之时间管理"入坑"

    长期以来,时间管理一直被认为是自我管理,团队管理,项目管理的既关键又基础的手段,就连笔者本人也一直在崇尚时间管理的理念. 但是这里要讲的,不是什么鬼神方法论.而主要是对长时间以来学习和实践时间管理的一 ...

  4. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

  5. jqgrid three 树形结构

    最近我们的表格中,需要更改数据的显示方式,就是jqgrid中以树形的方式显示.请先看图: 就是简单的这种从属方式.但是因为这个没有找到官方的文档(后来找到了,但是发现是翻译过来的,也不是很清楚),所以 ...

  6. ArcGIS JS Api 4.x修改三维球背景技巧

        通过修改scenceview.js中tileBackground和defaultTileBackground中的png的base64编码就可以达到要求. 4.8中通过修改scenceview. ...

  7. 2025战略,中秋送福利!免费开源ERP Odoo Windows 一键傻瓜式安装版发布

    概述 为了帮助更多的小白,能够快速的体验Odoo的强大功能,针对国内大多数小白用户无法快速直接体验Odoo的尴尬,开源智造呕心沥血,历经数百次的测试和整合终于赶在中秋节这天将Odoo所需要的复杂运行环 ...

  8. ArcPy 批量给shp字段赋值

    工作中需要做大量图层的拼接,为了在拼接完成后还能知道原始数据文件是什么,所以写了个Python脚本对每个图层的SOURCE字段进行赋值. 附上Python代码: # -*- coding: utf-8 ...

  9. Intellij idea 离线安装activiti工作流插件

    想在Intellij idea上安装一个activiti插件玩玩,由于网络环境原因,不能使用网上已有的在线搜索acti bpm并安装的方式.也在网上找了好久没找到离线安装的方式.自己摸索了一下装好了, ...

  10. SQL Server死锁中的会话隔离级别为序列化(Serializable)实验测试

    最近在分析SQL Server的死锁时,发现一个比较有意思的现象,发现死锁当中一个会话的隔离级别为序列化(Serializable),这个是让人比较奇怪的地方,我们知道SQL Server数据库的默认 ...