Asp.Net Core 使用Docker进行容器化部署(一)
前几篇文章介绍了Liunx下的环境搭建,今天来分享一下.Net Core在Liunx上的部署。
我采用的方案是使用Dokcer作为运行虚拟机,Nginx作为Http服务器来进行反向代理,你可以理解为Docker就是程序的运行环境,而Nginx就是之前用的IIS。
文章分成两篇,第一篇写Docker部署,第二篇写Nginx代理。
一、编写Dockerfile
Dockerfile中记录了我们的程序在Docker环境中的各种配置
FROM microsoft/dotnet #FROM 指定功能所需的基础镜像,必须是第一条指令,我们这里指定aspnetcore
WORKDIR /web #定义你工作目录的名字
COPY . ./ #COPY 程序所在本地目录 容器目录 例如:COPY ${source:-bin/publish} ./hello 把source所在的目录下的,bin/publish子目录的内容复制到容器的hello目录
ENTRYPOINT ["dotnet", "CZKJ.CMS.Web.dll"] #运行dotnet命令,参数是你的程序集的入口dll--就是你的Web程序dll 配置还有很多例如EXPOSE可以指定对外开放的端口,如果不指定就是默认80,以上几个配置足够一般的.NetCore程序使用,以上配置copy下来可以直接使用只需要更改最下面一行的程序集名字就好。
写好Dockerfile后把Dockerfile放到你的包根目录下,文件不要加后缀名就只叫:Dockerfile

二、生成镜像
使用WinScp把你的程序集放到Liunx服务器上,WinScp是一个很好用工具,推荐下载而且免费。

然后远程链接到你的Liunx服务器,推荐一个小工具:Putty很好用的小工具
CD到刚才上传上来的目录中:cd /website/PublishOutput 注意要到文件夹里
在这里运行Docker 命令:docker build -t <要生成的镜像的名称> . (注意,结尾有个点,这个点是Dockerfile的路径,因为Dockerfile现在就在当前目录下,所以打个点就行,-t 参数后的镜像名字不需要打<>)
例如: dcoerk build -t demo .

Docker 会根据刚才配置的Dockerfile生成镜像,最后出现Successfully表示成功。
三、启动实例
上一步我们已经制作好了镜像,现在我们把镜像放到Docker里,让它跑起来。
执行Docker 命令:docker run -d --rm -p 5000:80 --name <实例名称> <镜像名称>
-d会在启动成功后输出镜像的唯一标识码, --rm 会判断如果存在同名实例会删除替换 -p指定程序运行端口 宿主端口:容器端口 注:因为上文中没有指定EXPOSE所以容器的端口是80 --name 参数后的实例名和镜像名不需要带<>
如下图,我把服务器的5003端口指定到了容器的80端口,现在访问5003就会访问到DEMO程序
docker ps 查看所有已经部署的实例

上面的这个命令所部署的实例会在容器重启或者服务器重启后自动卸载,也就是说一旦重启Docker服务或者镜像之后就这个实例就不存在了,需要重新Docker run,如下图,重启服务后刚才部署的实例没有了

重启后自动部署使用这条命令:docker run -d --restart=always -p 5000:80 --name <实例名> <镜像名> 注:--restart 和 --rm 冲突,只能选择一个
如下图,使用--restart=always参数后重启将不影响实例

四、进入镜像进行文件的查看更改
执行命令 docker ps 查看现有实例,然后执行命令 docker exec -it <CONTAINER ID> /bin/bash
如下图,这样我们就进入了镜像里面,这个web就是在Dockerfile里定义的那个WORKDIR参数

在镜像里如果想使用vim看日志或者改配置的话,需要自己安装,因为镜像里是没有vim的可以考虑使用cat.
如果要安装的话执行以下命令:apt-get update 执行完之后执行 apt-get install vim
安装完成后就可以使用vim了
五、停止、删除实例和镜像
停止命令:docker stop 实例ID
如图,我们停止了刚才启动的实例

删除已经生成的镜像命令
docker images 查看所有的镜像
docker rmi 镜像ID 删除指定镜像
删除前需要停止镜像,否则会删除失败,如下图,首先要停止镜像,然后删除镜像,不然会报错

至此,.NET Core在Docker中部署完毕,下一篇介绍使用Nginx进行反向代理。
Asp.Net Core 使用Docker进行容器化部署(一)的更多相关文章
- Asp.Net Core 使用Docker进行容器化部署(二)使用Nginx进行反向代理
上一篇介绍了Asp.Net 程序在Docker中的部署,这篇介绍使用Nginx对Docker的实例进行反向代理 一.修改Nginx配置文件 使用winscp链接Liunx服务器,在/ect/nginx ...
- ASP.NET Core使用Docker进行容器化托管和部署
一.课程介绍 人生苦短,我用.NET Core!今天给大家分享一下Asp.Net Core以Docker进行容器化部署托管,本课程并不是完完全全的零基础Docker入门教学,课程知识点难免有没覆盖全面 ...
- Asp.net Core Jenkins Docker 实现一键化部署
写在前面 在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署.大概的流程是Jenkins从git上获取代码 最开始Jenkins是放在Ubuntu的Docker ...
- .NET Core+MySql+Nginx 容器化部署
.NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...
- Asp.NetCore轻松学-使用Docker进行容器化托管
前言 没有 docker 部署的程序是不完整的,在写了 IIS/Centos/Supervisor 3篇托管介绍文章后,终于来到了容器化部署,博客园里面有关于 docker 部署的文章比比皆是,作为硬 ...
- Flask容器化部署原理与实现
本文将介绍Flask的部署方案:Flask + Nginx + uWSGI,并使用docker进行容器化部署,部署的实例来源 Flask开发初探,操作系统为ubuntu. Flask系列文章: Fla ...
- .NET Core微服务之ASP.NET Core on Docker
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Docker极简介绍 1.1 总体介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.D ...
- [翻译] ASP.NET Core 利用 Docker、ElasticSearch、Kibana 来记录日志
原文: Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 一步一步指导您使用 ElasticSearch, Kibana, ASP ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
随机推荐
- 性能优化小Tips
Performance Tips 这篇文章主要是介绍了一些小细节的优化技巧,当这些小技巧综合使用起来的时候,对于整个App的性能提升还是有作用的,只是不能较大幅度的提升性能而已.选择合适的算法与数据结 ...
- spring----对IoC和DI的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和 ...
- JavaScript中弧度和角度的转换
弧度 = 角度 * Math.PI / 180 角度 = 弧度 * 180 / Math.PI 在JavaScript Math 对象中: sin() 方法可返回一个数字的正弦. tan() 方法可返 ...
- TP5.0:访问不同模块方法,跳转视图页面
我们在开发项目时,都会给每个项目加上基本的后台管理页面,并命名为admin 那么,我们在添加admin后台模块后,怎么通过url访问admin后台模块文件代码呢? 1.访问admin模块默认文件的UR ...
- 我对git 、github的初印象
前言:都说,要在IT这行混得风生水起,就必须不断接触新事物.学习新东西.然而,这个重要的点也是难做的点.当老师要我们用博客交作业的时候,我就觉得挺新鲜了,在知道很多牛逼的程序猿还会用到git和gith ...
- bzoj1965 [Ahoi2005]洗牌
Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...
- HDU 4278 卡特兰,区间DP
题意:每个人有一个DI值,现在有一个小黑屋,这些人的顺序可以利用这个小黑屋调整,调整方式是入栈出栈方式,也就是说,这里的方案是有卡特兰数个方式. 调整后使得 d1*0 + d2*1 + d3*2 + ...
- CentOS如何部署TinyProxy
TinyProxy是个非常便利,及容易架设的HTTP代理 安装方法 rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release- ...
- 【题解】POJ 2115 C Looooops (Exgcd)
POJ 2115:http://poj.org/problem?id=2115 思路 设循环T次 则要满足A≡(B+CT)(mod 2k) 可得 A=B+CT+m*2k 移项得C*T+2k*m=B-A ...
- U盘安装centOS和下载地址
使用到的材料: 1.centos-6.2 i386 minimal 下载地址:http://mirrors.163.com/centos/6.2/isos/i386/CentOS-6.2-i386-m ...