好久没有更新文章了,前段时间写了一系列的文章放到桌面了,想着修修改改,后来系统中勒索病毒了还被公司网络安全的抓到是我电脑,后来装系统文章给装丢了。然后好长一段时间没有写了。

今天记录一下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部署的更多相关文章

  1. 【docker部署】基于linux的centos操作系统部署安装docker容器

    一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...

  2. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  3. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  4. Docker Compose 一键部署多节点爬虫程序

    Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...

  5. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...

  6. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

  7. 深入浅出Docker(四):Docker的集成测试部署之道

    1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方 ...

  8. docker微服务部署之:五、利用DockerMaven插件自动构建镜像

    docker微服务部署之:四.安装docker.docker中安装mysql和jdk1.8.手动构建镜像.部署项目 在上一篇文章中,我们是手动构建镜像,即: 4.1.2.5.1.2.6.1.2中的将d ...

  9. Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)

    最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...

随机推荐

  1. 实时监听input输入框value的变化:

    HTML5 标准事件 oninput 和 IE 专属事件 onpropertychange 事件实时监听输入框value的变化 oninput 事件在用户输入时触发. 该事件在 <input&g ...

  2. 操作系统底层原理与Python中socket解读

    目录 操作系统底层原理 网络通信原理 网络基础架构 局域网与交换机/网络常见术语 OSI七层协议 TCP/IP五层模型讲解 Python中Socket模块解读 TCP协议和UDP协议 操作系统底层原理 ...

  3. linux根目录下的各文件夹含义说明

    在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱. Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范, 推出 FHS ( F ...

  4. java数据结构和算法01(数组的简单使用)

    一直都对这一块没有什么想法,加上不怎么理解,只是懂个大概:最近突然感觉对数据结构和算法这块有点儿兴趣,决定还是尽量详细的看看这些结构和算法: 话说什么事数据结构和算法呢?现在我也说不上来,等我学的差不 ...

  5. 19条MySQL优化准则

    1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...

  6. SQL Server 动态掩码

    介绍 动态数据掩码(DDM)是SQL Server 2016引入的一个新功能.目的就是限制没有权限的人去看到一些隐私信息.管理员用户能够决定哪些字段是需要被掩码的,那么如何在不改变应用程序代码的基础上 ...

  7. Ambari安装HDP问题:User root is not allowed to impersonate anonymous.User: hcat is not allowed to impersonate ambari-qa

    User root is not allowed to impersonate anonymous 修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项 < ...

  8. ambari2.6.50 openssl 版本问题:SSLError: Failed to connect. Please check openssl library versions. Openssl error upon host registration

    I'm trying to register hostnames in Ambari but getting the error below. We tried to run yum update o ...

  9. mysql关联表更改表多个字段值

    关联表更改某一个字段值:更改部分数据,外层where条件控制更改记录的数量 BEGIN; " ; "; ROLLBACK; -- COMMIT; 关联表更改某一个字段值:更改全部记 ...

  10. JavaScript中的 NaN 与 isNaN

    NaN NaN 即 Not a Number ,不是一个数字. 在 JavaScript 中,整数和浮点数都统称为 Number 类型 .除此之外,Number 类型还有一个很特殊的值,即 NaN . ...