AspNetCoreapi 使用 Docker + Centos 7部署
好久没有更新文章了,前段时间写了一系列的文章放到桌面了,想着修修改改,后来系统中勒索病毒了还被公司网络安全的抓到是我电脑,后来装系统文章给装丢了。然后好长一段时间没有写了。
今天记录一下AspNetCore 部署Docker+Centos 7 这里说明一下:Docker 需要用Centos7版本的操作系统
这里模拟演示的是实战环境的部署,项目就是使用的实战中的项目
1:安装前准备
首先确保我们有一台Linux 服务器或者系统或者虚拟机,我使用的是虚拟机系统做的Centos 7的版本。然后确保网络是通的,最好能联通外网,因为我们在部署的过程须有很多的东西需要下载:
部署中使用的工具:secureCRT:链接Linux终端的服务器,
:XFTP5 :上传发布的文件
2:安装Docker 步骤如下:
使用:secureCRT链接上Linux 如下:
Docker的官方文档:https://docs.docker.com/
Docker 分为社区版CE和企业版EE,CE是免费提供给开发者和小团体使用,企业版的是收费的,我这里选择使用的是社区版的。
步骤:如下
1.开始安装:首先执行命令安装所需的包:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
2.设置稳定的存储库:sudo yum-config-manager
\--add-repo
\https://download.docker.com/linux/centos/docker-ce.repo
3.安装:sudo yum install docker-ce
4.启动:sudo systemctl start docker
5.验证是否成功: sudo docker version
6.安装结果:
这里是官方安装过程:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
3:AspNetCore 镜像的选择与拉取
选择下载镜像前我们首先需要确定的是我们项目将要或者已经使用的是什么版本的项目框架,我们项目使用的是2.1;
在下载镜像的时候我们可以事先给下载好镜像,也可以使用 Dockerfile 文件进行下载:
如果我们需要在Docker 容器中进行编译打包运行等操作的时候我们就需要安装完整的SDK了, 如果我们只是单纯的运行的话只需要安装运行时 aspnetcore-runtime就行:官方文档中也有明确的说明:
拉取镜像有两种方式如下:
1.使用命令拉取镜像: docker pull microsoft/dotnet:2.1-sdk
查看结果:docker images
2.使用Dockerfile 文件拉取
新建新建文件去掉后缀名命名为:Dockerfile 编辑文件内容如下:请注意FROM 节点上也是咱们将要使用的镜像:下图箭头指向部分
切换到Dockerfile 文件所在的目录下 执行命令 创建一个镜像
查看结果:
这里有两个镜像 名为ESD镜像就是咱们的项目运行镜像了,但是我们没有准备任何将要运行的项目,所以此镜像是失败的,我们执行这一步证明了Docker 可以直接拉取项目运行的镜像。
执行命令对它进行删除:docker rmi esd(可以使用镜像的名称或者镜像的 ID进行删除)
4:项目的部署:
首先在进行部署前我建议大家先看认真看一边官方有关Docker的网络配置
https://docs.docker.com/network/
一个新的项目如果不对项目的IP或端口进行任何改变的话 部署成功后默认监听的是80 端口,如下图所示:
如果你不进行改变的话也就是说这个项目部署是就使用80端口了,在创建容器的时候重新指定的端口就访问不通了。
所以我首先改动了项目中的项目运行时监听的端口在项目文件Program添加代码如下:
.UseKestrel().UseUrls("http://*:8091") // 在所有网络接口上监听端口 8091
改好后进行发布:发布完成后上传到服务器Dockerfire 文件所在的目录中
对Dockerfire 进行修改
# 表示当前创建的镜像所依赖的基础镜像 FROM microsoft/dotnet:2.1-sdk # 表示当前容器的工作目录 将要运行的web程序放在容器中的那个目录下,没有会自动创建 WORKDIR /app # 设置对外暴露的端口,不设置默认为 EXPOSE # 表示会把当前目录下的Web程序文件 拷贝到 容器的 /app 文件下, COPY . . # 将要执行的命令 CMD ["dotnet", "lenovo.core.ESDDB.WebApi.dll"]
使用命令运行该Dockerfire 文件创建容器
命令: docker build -t esdapi .
这个命令需要注意的是 镜像名称 不要使用大写 镜像名称后的 “点”不要忽略了
创建容器:
命令:docker run --name esdapi -d -p 8091:8091 esdapi
结果如图所示:
查看结果:docker ps
这里注意的是在查看结果的时候如果没有容器在运行则使用 docker ps -a 命令查看容器找到容器的ID 使用 docker logs +容器ID 查看容器日志信息找原因。
外部访问部署结果:
大家对直接 考软考高级,以及PMP 证书感兴趣的话 可以加群 815186020 目前机构正在搞活动优惠很多,说 “乐途” 介绍的应该会有优惠
有不足之处 希望大家指出相互学习,
本文原创:转载请注明出处 谢谢!
AspNetCoreapi 使用 Docker + Centos 7部署的更多相关文章
- 【docker部署】基于linux的centos操作系统部署安装docker容器
一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...
- Docker Compose 一键部署LNMP
Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- Docker Compose 一键部署多节点爬虫程序
Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...
- Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...
- docker微服务部署之:六、Rancher管理部署微服务
docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...
- 深入浅出Docker(四):Docker的集成测试部署之道
1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方 ...
- docker微服务部署之:五、利用DockerMaven插件自动构建镜像
docker微服务部署之:四.安装docker.docker中安装mysql和jdk1.8.手动构建镜像.部署项目 在上一篇文章中,我们是手动构建镜像,即: 4.1.2.5.1.2.6.1.2中的将d ...
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
随机推荐
- 死磕 java集合之ConcurrentLinkedQueue源码分析
问题 (1)ConcurrentLinkedQueue是阻塞队列吗? (2)ConcurrentLinkedQueue如何保证并发安全? (3)ConcurrentLinkedQueue能用于线程池吗 ...
- 强化学习(十五) A3C
在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...
- Wmyskxz文章目录导航附Java精品学习资料
前言:这段时间一直在准备校招的东西,所以一晃眼都好长时间没更新了,这段时间准备的稍微好那么一点点,还是觉得准备归准备,该有的学习节奏还是要有..趁着复习的空隙来整理整理自己写过的文章吧..好多加了微信 ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- Redis主从同步要深入理解?一篇文章足矣!
前言: 今天想和大家分享有关 Redis 主从同步(也称「复制」)的内容. 我们知道,当有多台 Redis 服务器时,肯定就有一台主服务器和多台从服务器.一般来说,主服务器进行写操作,从服务器进行读操 ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- SQL两列数据,行转列
SQL中只有两列数据(字段1,字段2),将其相同字段1的行转列 转换前: 转换后: --测试数据 if not object_id(N'Tempdb..#T') is null drop table ...
- 关于openssl的交叉编译
最近有个项目用到openssl,于是去openssl的官方网站上下载了最新的版本,v1.1.1b版本. 解压之后,发现配置编译,可以使用./config或者./Configure来完成. 网上也查了一 ...
- AD用户属性:UserPrincipalName与SamAccountName的差别
在我们日常工作中或者日常针对AD进行自动化开发的过程中,我们都会对UserPrincipalName与SamAccountName产生疑惑,毕竟很多时候大家都把这两个属性值理解为同一个概念,至于为什么 ...
- Windows Server 2016-MS服务器应用程序兼容性列表
该表罗列支持 Window Server 2016 上安装和功能的 Microsoft 服务器应用程序. 此信息用于快速参考,不用于替代有关单个产品的规格.要求.公告或每个服务器应用程序的常规通信的说 ...