.net core 部署 docker (CentOS7)
最近研究 docker 在Linux 下部署 .net core 项目,在过程中踩了很多坑,网上的资料对我帮助确实大,但有些问题未指明出来。
特地整理一份在发布文档
本文使用的是 root 账号操作,如果不是root账号,命令前需要增加 sudo
1、安装dotnet (这一步可以不需要)
https://dotnet.microsoft.com/download
以安装运行时 2.1版本为例
https://dotnet.microsoft.com/download/linux-package-manager/centos/runtime-current
rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
yum update
yum -y install aspnetcore-runtime-2.1
查看 dotnet 版本
dotnet --info
2、安装Docker CE 版
https://www.cnblogs.com/longjieboke/p/10734557.html
3、配置docker加速器
本方使用的是阿里云镜像加速器,参考
https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.549.19e611be46gAPY
容器镜像服务 -> 镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的镜像加速地址"]
}
EOF
重启docker服务
systemctl daemon-reload
systemctl restart docker
4、.net core 创建 Dockerfile

由于默认生成的 Dockerfile 是包含编译和发布。更改Dockerfile文件内容
#基于 `microsoft/dotnet:2.1-aspnetcore-runtime` 来构建镜像,自行更改为你自己的
FROM microsoft/dotnet:2.1-aspnetcore-runtime
#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 , publish 可自行更改名称
COPY . /publish
#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish
#设置Docker容器对外暴露5000端口,防火墙需要开放此端口,必须和 dotnet xx.dll运行时的端口保持一致
EXPOSE 5000
#使用`dotnet xx.dll`来运行应用程序
ENTRYPOINT ["dotnet", "ToolManager.dll"]
5、发布项目

6、将发布的文件拷备到 能发os的系统文件夹中
创建 docker(自定义名称)文件夹
使用winSCP工具上传文件到linux服务器的指定文件夹
7、生成镜像
cd 到 刚才的文件夹下
docker build -t 镜像名称 . (注意:最后空格后面有一个.)。
示例: docker build -t demo-netcore .
8、查看生成的镜像
docker images
9、运行docker容器
docker run --name 容器名称 -d -p 5000:5000 镜像名称
示例: docker run --name democore -d -p 54907:80 demo-netcore
democore 容器的名称。
-d 后台进程。
-p是进行宿主和容器之间端口的映射,(-p 宿主端口:容器端口)
docker run --name agentservice -d -p 8810:8810 agentservice-container:1.0 --restart=always
10、检验docker容器是否运行成功
docker ps -a
docker ps 查看正在运行的容器
如果异常,使用命令
docker run -it 镜像名称 bash
查看异常
如果 提示 sdk版本不同
删除旧版 yum remove -y aspnetcore*
更新 yum -y install aspnetcore-runtime-2.1
11、防火墙开放端口
查看防火墙状态:systemctl status firewalld
开启防火墙:systemctl start firewalld
开放端口:firewall-cmd --zone=public --add-port=【端口】/tcp --permanent
firewall-cmd --reload 重启防火墙
firewall-cmd --query-port=【端口】/tcp 查看端口是否开放
12、访问
因为运行docker容器的时候 进行了 端口映射 所以外部访问端口 为 5000
http://192.168.1.1:5000
13、停止和删除容器
docker stop (容器id)
sudo docker rm (容器id)
14、删除镜像
docker rmi (镜像ID)
15、查看docker日志
docker logs -f -t --since="2017-05-31" --tail=10 alibaba-vica-netapi
docker logs 6dc1e5f74c0
16、停止和删除容器
docker stop (容器id)
sudo docker rm (容器id)
17、删除镜像
docker rmi (镜像ID)
18、创建容器
docker commit -p 容器ID 快照名称
19、保存本地tar备份
docker save -o ~/xxxx.tar 容器名称
20、恢复docker备份
docker load -i docker-alibaba-server.tar
21、进入 docker容器内部
docker exec -it 容器id /bin/bash
22、退出容器
Ctrl + D 或 exit
遇到的问题
发布后访问时提示 连接被重置

原因由于程序中

并且
dockerfile 文件中
EXPOSE 5000 #端口必须跟里面的端口保持一致
.net core 部署 docker (CentOS7)的更多相关文章
- ASP.NET Core部署到CentOS7,使用Nginx代理
ASP.NET Core 的运行环境由新开发的 Kestrel Server 负责,IIS 退回到 HTTP 的侦听器的角色,微软也特别为了这个需求开发了 IIS Platform Handler,以 ...
- asp.net Core 部署到CentOs7上,使用Nginx做代理
一.CentOs7部署Nginx 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要openssl库,直接通过 ...
- .net core 部署 Docker 所遇到的几个问题
1.Connection reset by peer 造成这个问题的主要原因是在program.cs 文件中,未加入端口: public static IWebHostBuilder CreateWe ...
- .Net Core 部署到 CentOS7 64 位系统中的步骤
建议使用 root 管理员账户操作 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务器一开机就启动服务器 上发 ...
- ASP .Net Core系统部署到 CentOS7 64 具体方案
.Net Core 部署到 CentOS7 64 位系统中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是 ...
- docker+efk+.net core部署
部署环境 centos7 本主要利用efk实现日志收集 一.创建docker-compose es地址:https://www.elastic.co/guide/en/elasticsearch/re ...
- Linux环境基于CentOS7 搭建部署Docker容器
1.Docker容器概述 区分Docker容器技术和VM虚拟机技术: evernotecid://394EFE90-9CE0-4D65-A8CD-DFEC0DC8061E/appyinxiangcom ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
随机推荐
- Arithmetic Slices LT413
A sequence of number is called arithmetic if it consists of at least three elements and if the diffe ...
- 【Java】JavaWeb 登录检查及界面跳转
场景 一般javaweb网站都有用户登录,而有一些操作必须用户登录才能进行,常见流程:用户请求-->后台判断是否登录-->没登录跳转到登录界面,登录用户正常操作 解决思路 在用过滤器过滤请 ...
- mybatis学习二 全局配置文件常用配置
全局配置文件的详细解析可以参考mybatis的中文参考文档 1.全局配置文件中内容1.1 <transactionManager/> type 属性可取值1.1.1 JDBC,事务管理使用 ...
- 2019.01.22 poj2926 Requirements(状态压缩)
传送门 题意:给一堆五维的点,求最远点对. 思路:跟CF1093G差不多 考虑把正负号状压成一个323232以内的数,然后对于每一类分别求最大最小值再做差更新答案即可. 代码: #include< ...
- 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)
传送门 题意:序列上有nnn个商店,有两种事件会发生: sss商店上进购标价为vvv的一个物品 求编号为[l,r][l,r][l,r]之间的位置买ddd天内新进购的所有物品与一个数xxx异或值的最大值 ...
- 2018.11.24 poj1743Musical Theme(二分答案+后缀数组)
传送门 代码: 二分答案. 然后对于预处理的heightheightheight数组分成几段. 保证每一段中都是连续的几个heightheightheight并且这些heightheightheigh ...
- MySQL批量修改表前缀
error_reporting(0); $old_pre = 'tdr_'; // 原表前缀 $new_pre = 'db_'; // 新表前缀 // 配置连接 $db = new mysqli('1 ...
- MPA(Macro Prudential Assessment)即宏观审慎评估体系
MPA(Macro Prudential Assessment)即宏观审慎评估体系.2015年12月29日,央行发布公告称,为进一步完善宏观审慎政策框架,更加有效地防范系统性风险,发挥逆周期调节作用, ...
- 分分钟搞懂union与union all
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- UVa 11542 Square (高斯消元)
题意:给定 n 个数,从中选出一个,或者是多个,使得选出的整数的乘积是完全平方数,求一共有多少种选法,整数的素因子不大于 500. 析:从题目素因子不超过 500,就知道要把每个数进行分解.因为结果要 ...