参考文章 https://www.cnblogs.com/sheng-jie/p/8107877.html

1.安装docker

1.1官方文档

https://docs.docker.com/engine/installation/linux/docker-ce/centos/

[root@sn ~]# yum remove docker \ #删除旧版本

                  docker-common \

                  docker-selinux \

                  docker-engine

[root@sn ~]# yum install -y yum-utils \ 

             device-mapper-persistent-data \
lvm2
[root@sn ~]# yum-config-manager \ --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo [root@sn ~]# yum install docker-ce #安装docker
[root@sn ~]# systemctl start docker #启动docker

1.2 docker

通过运行hello-world 映像验证安装是否正确。

[root@sn ~]# docker run hello-world

1.3 配置镜像加速

[root@sn ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://3e722983.m.daocloud.io
[root@sn ~]# systemctl restart docker

1.4 拉取microsoft/dotnet镜像

[root@sn ~]# docker pull microsoft/dotnet
[root@sn ~]# docker pull microsoft/microsoft/aspnetcore
[root@sn ~]# docker images

//启动一个dotnet镜像
[root@sn ~]# docker run -it microsoft/dotnet
//创建项目名为HelloDocker.Web的.NET Core MVC项目
[root@sn ~]# dotnet new mvc -n HelloDocker.Web
//进入HelloDocker.Web文件夹
[root@sn ~]# cd HelloDocker.Web
//启动.NET Core MVC项目
dotnet run

2. 挂载宿主机项目到容器中

2.1 通过FileZilla上传项目的宿主机demo目录下:

2.2 基于microsoft/dotnet:latest镜像,映射5000端口到宿主机5000端口并挂载宿主机demo到容器app目录

[root@sn ~]# docker run -p : -it -d -v /demo:/app microsoft/dotnet:latest
[root@sn ~]# docker ps

[root@sn ~]# docker exec –ti 4044ea20a695 /bin/bash
root@630623fd1c84:/app/demo/SN_ITProjectSolution/WA_SNWeb# dotnet run

测试结果

外部访问宿主机IP 192.168.30.190:5000自动跳转到Docker容器172.17.0.2:5000,说明部署成功。

3. 通过Nginx负载均衡80端口跳转5000端口

3.1 安装nginx

:http://blog.csdn.net/Jenson_/article/details/77896608

3.2 修改配置文件:

vi /usr/local/nginx/conf/nginx.conf

修改添加代码:

http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on;
upstream 192.168.30.190 {
server 192.168.30.190:5000 ;
}
server {
listen ;
server_name 192.168.30.190; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.30.190;
}

测试结果:

外部访问192.168.30.190(默认80端口)跳转到192.168.30.190:5000端口,192.168.30.190:5000是Docker容器172.17.0.2:5000的映射端口。

4.借助Dockerfile

Dockerfile用来定义你将要在容器中执行的系列操作。我们来创建第一个Dockerfile:

//确保进入我们创建的项目目录中去
$ cd /root/demo/PublishOutput//使用touch命令创建Dockerfile
$ touch Dockerfile
//使用vi命令编辑Dockerfile
vi Dockerfile

进入VI编辑界面后,复制以下代码,使用shift + Ins命令即可粘贴。然后按ESE退出编辑模式,按shift + :,输入wq即可保存并退出编辑界面。

FROM microsoft/dotnet:latest
WORKDIR /app
COPY . /app
EXPOSE
ENV ASPNETCORE_URLS http://*:5000
CMD ["dotnet"," WA_SNWeb.dll"]

上面的命令我依次解释一下:

  1. 使用FROM指定容器使用的镜像
  2. 使用WORKDIR指定工作目录
  3. 使用COPY指令,复制当前目录(其中.即代表当前目录)到容器中的/app目录下
  4. 使用RUN命令指定容器中执行的命令
  5. 使用EXPOSE指定容器暴露的端口号
  6. 使用ENV指定环境参数,上面用来告诉.NETCore项目在所有网络接口上监听5000端口
  7. 使用CMD指定运行命令dotnet WA_SNWeb.dll

Dockerfile就绪,我们就可以将我们当前项目打包成镜像以分发部署。
使用docker build -t <name> <path>指令打包镜像:

$ docker build -t hellodocker.web .

以上命令就是告诉docker将当前目录打包成镜像,并命名为hellodocker.web。命令执行完毕,输入docker images即可看到我们新打包的镜像。镜像创建完毕我们就可以直接运行了:

docker run -dit -p 5000:5000 hellodocker.web    /bin/bash

上面的指令就是运行我们新打包的镜像,并通过-p参数映射容器的5000到宿主机的80端口,其中-dit参数告诉docker以后台任务形式运行镜像。

至此,我们借助Docker就完美的完成了.NET Core项目的容器化部署。

我打包的镜像是保存在本地的,我如何把镜像部署到其他机器上呢?

5.推送镜像到仓库

docker login

在推送之前要把镜像按<user>/<repo>格式来命名。那如何重命名呢,我们用打标签的方式重命名:

docker tag hellodocker.web xiaowenxiao/hellodocker.web:v1
docker images
docker push xiaowenxiao/hellodocker.web

换台机器执行:

docker pull xiaowenxiao/hellodocker.web:v1
docker run -p : xiaowenxiao/hellodocker.web:v1

CentOS利用Nginx+Docker部署.netcore应用的更多相关文章

  1. Docker部署NETCORE应用程序

    Docker部署NETCORE应用程序 创建.netcore项目,本文以ASP.NET Core2.2 版本为例 设置Dockerfile属性始终复制 编辑Dockerfile内容 FROM micr ...

  2. Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip

    目录 Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip 场景 过程还原 结论 参考资料 Nginx+Docker部署模式下 asp.net core 获取真实的客户端 ...

  3. Centos 7使用docker部署LAMP搭建wordpress博客系统

    0.简要概述 LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案.docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级.可移植的容器. ...

  4. Centos 中使用通过docker 部署.netcore

    此前,我一直觉得,目前网络上的各种各样的技术文章.技术文档已经足够多,任何一种技术,都可以或多或少的在网络上找到教程,或者在qq群里找到前辈解答.所以,我觉得自己在博客上写文章的意义甚少.甚至觉得自己 ...

  5. Docker部署netcore web实践

    1. 新建一个netcore的项目 2. 我们到项目的生成输出目录下,创建一个Dockerfile文件 3. 编辑Dockerfile文件 备注:红线圈住的地方,就是你生成的netcore的程序名称 ...

  6. docker部署netcore应用(二)

    基于第一章已经安装好了docker,这次将把netcore应用部署到docker容器中 开发工具vs2017,准备个DotNet Core的Console应用程序,测试一下 发布DockerTest项 ...

  7. Centos下使用Docker部署asp.net core项目

    本文讲述 CentOS 系统 Docker 中部署 asp.net core开源项目 abp 的过程 步骤 1. 拉取 asp.net core 基础镜像 docker pull microsoft/ ...

  8. CentOS利用nginx和php-fpm搭建owncloud私有云

    1.安装owncloud CentOS下有一键安装命令 yum install owncloud 默认配置目录: /etc/owncloud 默认内容目录: /usr/share/owncloud 2 ...

  9. (转)Centos下,Docker部署Yapi接口管理平台

    接口测试的工具很多,公司引进了接口管理平台Yapi,自己尝试直接搭建,从安装Nodejs到配置MongoDB数据库,再到安装yapi的时候,遇到浏览器打开本地服务器Ip地址后,没有显示部署内容...没 ...

随机推荐

  1. 【开发技术】eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法

    要格式化代码的时候,右键-source-format能够起效,但ctrl+shift+f不好使了. 原来是和“简繁体快捷键”冲突了.输入法中的这个快捷键我们一般不用,小勾勾去掉就成了. eclipse ...

  2. bootstrap 响应式图片自适应图片大小

    <img src="..." class="img-responsive center-block" > 或者 $(window).load(fun ...

  3. 一个自己稍作修改了的美赛论文LaTeX模板

    原模板(5.0)来自LaTeX工作室(latexstudio.net),我按照比赛规范做了一点小小的修改(5.0y),并加上了比原来更详细一些的注释,方便使用. 仅仅分享一下方便大家使用,模板的原创者 ...

  4. MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符.如果我们想要模糊查询带有通配符的字符串,如“60%”,“us ...

  5. execl列数据成等差递增递减

    如上图若想以10,20,30...这样递增: 1).首先需选中10,20所在的单元格,鼠标移至20所在的单元格右下角 2).此时会出现一个十字"十"符号,点击直向下拖动至某个地方, ...

  6. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  7. 高通ASOC中的machine驱动

    ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...

  8. 基于tomcat+springMVC搭建基本的前后台交互系统

    一.摘要 1.所需软件列表: 1) tomcat :  apache-tomcat-7.0.54  服务端容器 2) Intellij: Intellij IDEA 14.0.3         开发 ...

  9. BZOJ 2406: 矩阵 [上下界网络流 二分答案]

    2406: 矩阵 题意:自己去看吧,最小化每行每列所有元素与给定矩阵差的和的绝对值中的最大值 又带绝对值又带max不方便直接求 显然可以二分这个最大值 然后判定问题,给定矩阵每行每列的范围和每个元素的 ...

  10. 51NOD 1376 最长递增子序列的数量 [CDQ分治]

    1376 最长递增子序列的数量 首先可以用线段树优化$DP$做,转移时取$0...a[i]$的最大$f$值 但我要练习$CDQ$ $LIS$是二维偏序问题,偏序关系是$i<j,\ a_i< ...