前言

在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序。

ASP.NET Nginx 发布和部署 :http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html

Asp.Net Jexus 发布和部署:http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html

目录

  • Docker 常用命令
  • Docker 安装Asp.Net Core镜像
  • 使用Dockerfile部署

Docker 常用命令

docker info

检查Docker的安装是否正确,如果没有找到此命令,则表示Docker没有正确安装

docker pull busybox

拉取一个预建的镜像

sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")

以后台进程的方式运行hello docker

sample_job命令会隔一秒打印一次Docker,使用Docker logs可以查看输出。如果没有起名字,那这个job会被分配一个id,以后使用命令例如Docker logs查看日志会变得比较麻烦。

docker logs $sample_job

运行Docker logs命令来查看job的当前状态:

docker help

所有Docker命令

docker stop $sample_job

停止名为sample_job的容器

docker restart $sample_job

重新启动该容器

docker stop $sample_job docker rm $sample_job

如果要完全移除容器,需要将该容器停止,然后才能移除

docker commit $sample_job job1

将容器的状态保存为镜像

docker images

令查看所有镜像的列表

下面分享一些我经常使用的一些命令:

移除所有的容器和镜像,用一行命令大扫除:

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)

仅仅想删除所有的容器,你可以运行如下命令:

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)

清除名称为none的镜像,一般都是下载一般失败的残留:

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi

清除单个镜像:

docker rmi -f <image id>

Docker 安装Asp.Net Core镜像

有关Docker的安装请参考官网:

https://www.docker.com/products/docker

到这里,假设你的Docker已经安装完成,以下环境为 Liunx(Ubuntu 15.02)。

打开 https://hub.docker.com 右上角搜索dotnet,选择第一个搜索结果microsoft/dotnet,点进去如下图:

得到命令了吧,切换到命令行窗口运行以下命令来安装asp.net core 镜像。

sudo docker pull microsoft/dotnet

什么? 没响应,速度慢? 你不会买个高速VPN啊~

什么? 没钱? 你不会找一个国内的Docker镜像站啊~ DaoCloud镜像啊,阿里云Docker镜像啊。。自己动手找啊。。

镜像下载完成之后,输入sudo docker images我们检查一下:

至此,准备工作已经全部完成了

使用 Dockerfile 部署

Dockerfile 是什么东西,Dockerfile有什么用,自行百度。

博主直接教你怎么写吧:

总不能一直用5000端口吧,这次我们使用60000端口

1、程序命令行切换到publish文件目录中。

2、sudo touch Dockerfile 名称不要写错了,没有任何后缀名,来新建一个Dockerfile文件。

3、sudo vim Dockerfile 使用Vim来编辑Dockerfile。如果Vim不会用就用gedit吧。

4、输入以下内容:

Dockerfile

#基于 `microsoft/dotnet:1.0.0-core` 来构建我们的镜像
FROM microsoft/dotnet:1.0.0-core #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
COPY . /publish #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish #设置Docker容器对外暴露60000端口
EXPOSE 60000 #使用`dotnet HelloWebApp.dll`来运行应用程序 CMD ["dotnet", "HelloWebApp.dll", "--server.urls", "http://*:60000"]

使用:wq来保存并退出 (gedit无视掉 )。

构建镜像

运行 docker build -t hellowebapp:1.0 . 来构建一个镜像

运行构建的镜像

使用docker run --name hellowebapp -d -p 60000:60000 hellowebapp:1.0

打开浏览器测试一下:

PS: 终于通了,踩了好多坑。你不点个赞么?

下一篇怎么在 Linux 为 dotnet 创建守护进程(Linux 部署必备知识),已经写好了,明天发。


本文地址:http://www.cnblogs.com/savorboard/p/dotnetcore-docker.html

作者博客:Savorboard

欢迎转载,请在明显位置给出出处及链接

ASP.NET Core Docker部署的更多相关文章

  1. Asp.Net Core&Docker部署到树莓派3B中

    花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http:/ ...

  2. 详解ASP.NET Core Docker部署

    前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序. ...

  3. Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

    1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get ...

  4. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  5. ASP.NET Core Docker jexus nginx部署-CentOS实践版

    本文用图文的方式记录了我自己搭建centos+asp.net core + docker + jexus + nginx的整个过程,希望对有同样需求的朋友有一定的参考作用. 本文主要内容如下: cen ...

  6. Docker的asp.net core应用部署系列——docker pull 加速

    原文:Docker的asp.net core应用部署系列--docker pull 加速 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/a ...

  7. NET Core Docker部署

    NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...

  8. Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署

    运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...

  9. 实战Asp.Net Core:部署应用

    1.前言 某一刻,你已经把 .Net Core 的程序写好了.接下来,还可以做什么呢?那就是部署了. 作为一名开发工程师,如果不会部署自己开发的应用,那么这也是不完整的.接下来,我们就来说说,如何部署 ...

随机推荐

  1. asp.net Application、 Session、Cookie、ViewState、Cache、Hidden 的区别

    这些对象都是用来保存信息的,包括用户信息,传递值的信息,全局信息等等.他们之间的区别: 1.Application对象 Application用于保存所有用户的公共的数据信息,如果使用Applicat ...

  2. 怎样用conda安装opencv

    首先用Anaconda是因为方便(管理方便,包安装真心不方便).下面是我的安装过程: 首先使用如下命令安装opencv conda install -c https://conda.binstar.o ...

  3. 第五篇:在SOUI中使用XML布局属性指引(pos, offset, pos2type)

    窗口布局的概念 每一个UI都是由大量的界面元素构成的,在Windows编程,这些界面元素的最小单位通常称之为控件. 布局就是这些控件在主界面上的大小及相对位置. 传统的布局一般使用一个4个绝对坐标来定 ...

  4. Python-面向对象

    面向过程变成:函数式变成,C程序等 面向对象编程:C++,Java,Python等   类和对象: 类:是对事物的抽象,比如人类.球类 对象:是类的一个实例,比如足球.篮球   实例说明: 球类可以对 ...

  5. asterisk简单命令

    重启asterisk [root@EC2-V2 ~]# service asterisk restart 进入asterisk操作界面 [root@EC2-V2 ~]# asterisk -vvvr ...

  6. TProfiler

    下载:访问 TProfiler 的 GitHub 主页,https://github.com/alibaba/TProfiler,点击 Clone or download 按钮的打开下载选项,点击该选 ...

  7. 盘点销售一体机 打印POS一体的设备。 打印,盘点,销售PDA(手持终端)+移动销售POS软件

    一.产品介绍 本产品为一个PDA(手持终端)+移动销售POS管理软件组合.可以实现功能如下: 可以实现移动销售(销售退货).盘点.配送.移库.打印小票的功能. 销售时,可以选择客户.业务员.库房,并且 ...

  8. Swift学习之熟悉控件

    最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...

  9. .NET string字符串的截取、移除、替换、插入

    在实际开发中经常要用到string的各种截取等操作,在这里总结自己认为经常出现的.NET 字符串的截取.移除.替换.插入操作,方面以后查阅. 前台代码: <%@ Page Language=&q ...

  10. Python爬虫学习(8):浙大软院网络登陆保持

    在浏览器的验证窗口中输入登陆名和密码后,成功后会弹出一个小的新窗口,如果不小心关闭了这个窗口,则就会无法联网.如果说我在一个不带有桌面的Linux系统中,我是不能够通过浏览器接入网络的,虽然提供了不同 ...