大概快有一年的时间没有碰过docker了,理由很简单,基本上都是在IIS上部署,看到很多大佬都开始Devops持续化集成了,还有就是用Linux守护进程很恶心,哈哈,但相对来说成本会更高,但对于大型团队来说还是不错的,这不?不想被大伙甩下,哈哈,赶紧捞回来点丢下的知识,这篇文章就算是对我自己的笔记吧...Docker 中 有EE 和 CE 两个版本,其中EE是开源的,CE是闭源的。

在Linux中安装Docker容器

首先我们需要检查Linux内核是否大于3.1.0,通过该命令查看。

[root@iZenarrdqnvpc4Z ~]# uname -r
3.10.-1062.1..el7.x86_64

随后我们安装docker必要的一些必要的工具,可以提前安装。

yum install -y yum-utils device-mapper-persistent-data lvm2

现在可以直接装Docker了,使用命令如下

sudo wget -qO- https://get.docker.com | sh

随后检查docker版本,看看是否安装成功?

[root@iZenarrdqnvpc4Z ~]# docker version
Client: Docker Engine - Community
Version: 19.03.
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov ::
OS/Arch: linux/amd64
Experimental: false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

现在想要使用docker image 以及 docker ps 等命令还不可以,因为你还没有start docker 服务。使用这俩命令来开启与关闭docker服务。

start docker.service  //开启
stop docker.service //关闭

由于我是用的阿里服务器,它给我提供了镜像加速器,这主要是为了提高拉取docker hub的速度,可以在https://cr.console.aliyun.com/cn-huhehaote/instances/mirrors 中看见,我的内容如下,完事之后就可以享受加速了。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://baqadmms.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在.NET Core工程中编写Dockerfile文件。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#应用基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
#工作目录
WORKDIR /app
#将整个publish文件 放到该文件下生产
COPY . /app
#指定对外端口
EXPOSE
#启动命令
ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"]

因为我的应用程序是单一部署,所以不存在动态端口  所以我这边直接useUrls了。

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://*:5003");
});

现在通过dotnet命令发布项目,一定记得把Dockerfile文件属性改为输出到输出目录哦~,随后你可以现在Windows中进行测试了,例如dotnet xxx.dll命令。

随后通过FileZilla上传到Linux目录中Publish文件夹中,当然这也是我自己的爱好,因为它的命名很符合现在的场景。

就这样我们去构建build,通过linux命令cd到发布文件夹中,然后通过build命令构建镜像,我们发现刚刚的DockerFile的命令,一步一步都执行成功了。

[root@iZenarrdqnvpc4Z JwtWeb]# docker build -t jwtdemo .
Sending build context to Docker daemon .9MB
Step / : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
3.0-buster-slim: Pulling from dotnet/core/aspnet
8ec398bc0356: Pull complete
9584d2ef7ebe: Pull complete
62b61706cd9b: Pull complete
676f1d13ec65: Pull complete
35ddfe9ef309: Pull complete
Digest: sha256:de2b03f916d1f3a72d342825c3ec4414d0190862b20d2af295320334f17a1480
Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim
---> c7e868fda63d
Step / : WORKDIR /app
---> Running in 385a30e2b223
Removing intermediate container 385a30e2b223
---> b95c2a722df5
Step / : COPY . /app
---> 48edf64106cd
Step / : EXPOSE
---> Running in d4bf7b3b7122
Removing intermediate container d4bf7b3b7122
---> 752724a940e8
Step / : ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"]
---> Running in 9c0c2c190da3
Removing intermediate container 9c0c2c190da3
---> 4045861329a7
Successfully built 4045861329a7
Successfully tagged jwtdemo:latest

随后通过docker images 查看生成镜像是否成功,ok没问题,现在就可以run了...

[root@iZenarrdqnvpc4Z JwtWeb]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jwtdemo latest 4045861329a7 minutes ago 230MB
mcr.microsoft.com/dotnet/core/aspnet 3.0-buster-slim c7e868fda63d days ago 207MB

在docker run 中指定外部和docker内部中的映射规则  --name 是容器的名称,而最后面的是使用的所使用的镜像。

[root@iZenarrdqnvpc4Z JwtWeb]# docker run --name jwtweb -d -p : jwtdemo
36c4d4f8218adeeafa737f51f0975dfe8d6aa6d17435cefc355749a59c6298a2
[root@iZenarrdqnvpc4Z JwtWeb]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36c4d4f8218a jwtdemo "dotnet Jwt_Policy_D…" seconds ago Up seconds 0.0.0.0:->/tcp jwtweb

非常简单,我刚刚发布的网站地址如下:传送门 ..

超超超超超级简单的dockerfile github地址在:传送门 ..

另外

如果不通过UseUrls来进行启动的话,那么可以该下dockerfile的ENTRYPOINT 如下

ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll","urls=http://*:5003"]

三分钟学会使用Docker部署.NET Core的更多相关文章

  1. [转]三分钟学会.NET Core Jwt 策略授权认证

    [转]三分钟学会.NET Core Jwt 策略授权认证 一.前言# 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而 ...

  2. 一步步学会用docker部署应用(nodejs版)

    一步步学会用docker部署应用 docker是一种虚拟化技术,可以在内核层隔离资源.因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境.这大大简化了应用部署,让运维人员无需陷入 ...

  3. Docker 部署Dotnet Core MVC项目

    原文:Docker 部署Dotnet Core MVC项目 1.dotnet core创建项目 dotnet new mvc -o myweb cd myweb 然后就是业务代码的编辑,增删改查乱七八 ...

  4. 三分钟学会@Autowired@Qualifier@Primary注解

    三分钟学会@Autowired@Qualifier@Primary注解 2018.10.08 20:24 154浏览 今天主要简单的跟大家介绍一下spring自动装配相关的@Autowired,@Qu ...

  5. 三分钟学会使用Derby数据库

    Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目.由于是用Java实现的,所以可以在任何平台上运行:另外一个特点是体积小,免安装,java1.6开始集成了derby数 ...

  6. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  7. 三分钟学会在ASP.NET Core MVC 中使用Cookie

    一.Cookie是什么? 我的朋友问我cookie是什么,用来干什么的,可是我居然无法清楚明白简短地向其阐述cookie,这不禁让我陷入了沉思:为什么我无法解释清楚,我对学习的方法产生了怀疑!所以我们 ...

  8. 三分钟学会.NET Core Jwt 策略授权认证

    一.前言 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而又苛刻的客户中,我们会不知所措,就现在需要将认证授权这一块也 ...

  9. 三分钟学会Redis在.NET Core中做缓存中间件

    大家好,今天给大家说明如何在.NET Core中使用Redis,我们在想要辩论程序的好与坏,都想需要一个可视化工具,我经常使用的是一位国内大牛开发的免费工具,其Github地址为: https://g ...

随机推荐

  1. oracle函数 ABS(x)

    [功能]返回x的绝对值 [参数]x,数字型表达式 [返回]数字 [示例] select abs(100),abs(-100) from dual; sign(x) [功能]返回x的正负值 [参数]x, ...

  2. 最优化方法系列:Adam+SGD-AMSGrad 重点

    https://blog.csdn.net/wishchin/article/details/80567558 自动调参的Adam方法已经非常给力了,不过这主要流行于工程界,在大多数科学实验室中,模型 ...

  3. OP_REQUIRES failed at conv_ops.cc:386 : Resource exhausted: OOM when allocating tensor with shape..

    tensorflow-gpu验证准确率是报错如上: 解决办法: 1. 加入os.environ['CUDA_VISIBLE_DEVICES']='2' 强制使用CPU验证-----慢 2.'batch ...

  4. 【CSS3动画】下拉菜单模拟

    下拉菜单模拟效果图: CSS3: <style> #box{width:200px; height:50px; overflow:hidden; cursor: pointer; tran ...

  5. 条件随机场(CRF) - 2 - 定义和形式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...

  6. Java开发中RMI和webservice区别和应用领域

    Java开发中RMI和webservice区别和应用领域 一.RMI和webservice区别和联系 0. 首先,都是远程调用技术. 1. RMI是在TCP协议上传递可序列化的java对象(使用Str ...

  7. 2019-9-2-给博客添加rss订阅

    title author date CreateTime categories 给博客添加rss订阅 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17:23 ...

  8. H3C 主动方式建立连接过程

  9. yum安装gcc和gcc-c++

    本次总结参考 博客:http://blog.csdn.net/robertkun/article/details/8466700  ,非常 感谢他的博客,帮我解决了问题. 今天安装gcc-c++时出现 ...

  10. C# 如何写 DEBUG 输出

    本文来告诉大家一个规范,如何去写 DEBUG 的输出. 经常在代码中,需要使用 DEBUG 来输出一些奇怪的东西来进行测试.但是输出的窗口只有一个,如果有一个逗比在不停输出,那么就会让输出窗口看不到自 ...