拉取aspnetcore最新docker镜像

aspnetcore的docker镜像在docker官网是有的,是由微软提供的。它的依赖镜像是microsoft/dotnet。通过访问网址:https://hub.docker.com/explore/,搜索关键字aspnetcore就会找到镜像。但是如果直接从官网拉取镜像,速度会比较慢。之前我们对docker镜像加速器做过设置,用的是阿里云的,所以以后拉取镜像都是从阿里云拉取的。

执行以下命令拉取aspnetcore最新镜像:

[root@localhost ~]# docker pull microsoft/aspnetcore

注:到官网https://hub.docker.com/搜索microsoft/aspnetcore,可以看到该镜像支持.NET Core1.1版本,之前没留意,导致后续步骤完成后容器没跑成功,.NET Core2.2版本的镜像名称是microsoft/dotnet,地址为:https://hub.docker.com/r/microsoft/dotnet/,下载方式为:

[root@localhost ~]# docker pull microsoft/dotnet

拉取成功后执行docker images命令,如果能看到aspnetcore镜像,则表示拉取成功。

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/microsoft/dotnet       latest              521411f3b61d        3 days ago          1.73 GB

如果我们想拉取指定的aspnetcore版本,可使用如下命令:

[root@localhost ~]# docker pull microsoft/dotnet:1.0
[root@localhost ~]# docker pull microsoft/dotnet:2.0

我们可以执行下面的命令基于该镜像创建一个容器,并进入该容器:

[root@localhost ~]# docker run -it 521411f3b61d

执行下面的命令即可退出当前容器:

root@66095a66dce1:/# exit

制作自己的应用镜像

1.创建Dockerfile文件

我们先在临时目录创建Dockerfile,待会我们的asp.net core web应用也会放在临时目录。

[root@localhost ~]# cd /tmp
[root@localhost tmp]# vi Dockerfile

将下面代码拷贝进去,保存并退出。

FROM docker.io/microsoft/aspnetcore
WORKDIR /app
COPY ./songlou .
EXPOSE 8080
CMD ["dotnet", "SongLou.Web.dll"]

注:上面设置的EXPOSE 8080,网上查资料,应该是只要不在asp.net core项目的WebHost中把端口写死,这儿就可以随便设置,不需要跟launchSettings.json的

applicationUrl属性中设置的端口一致,applicationUrl中的端口只是在调试时起作用。经过实验,这儿端口随便设置,镜像都会反射代理映射到80端口。
 

对上面五行代码做下说明:

FROM表示新镜像所依赖的基础镜像。

WORKDIR表示你的asp.net core web应用放在容器的哪个目录,这里是/app目录,没有会自动创建

COPY表示拷贝当前系统下的哪个目录,这里是songlou目录,把要发布的网站拷贝到该目录下面

EXPOSE表示暴露出来的端口号,和容器的端口号对应。这里默认是80。

CMD表示执行的命令,即运行我们自己的asp.net core web程序。

想办法将你的asp.net core web发布程序拷贝到centos系统的/tmp里面,COPY对应的目录,如下:

COPY ./songlou .

2.创建镜像

[root@localhost tmp]# docker build -t mycore .

后面的英文符号“.”不能去掉,mycore表示你的镜像名称。如果出现Step1-Step5,则表示镜像创建成功。

 
Sending build context to Docker daemon 7.426 MB
Step 1/5 : FROM docker.io/microsoft/aspnetcore
---> c4ca78cf9dca
Step 2/5 : WORKDIR /app
---> Using cache
---> 1ddb7788a4a9
Step 3/5 : COPY ./songlou .
---> bfad39b69b61
Removing intermediate container c9170e38b598
Step 4/5 : EXPOSE 8080
---> Running in 7b5381a9e64c
---> be22e6986e1d
Removing intermediate container 7b5381a9e64c
Step 5/5 : CMD dotnet SongLou.Web.dll
---> Running in 697cdaf9d864
---> 44150b234924
Removing intermediate container 697cdaf9d864
Successfully built 44150b234924
 

再次查看所有镜像

[root@localhost tmp]# docker images

再次查看所有镜像,我们会看到:

REPOSITORY                       TAG                 IMAGE ID            CREATED              SIZE
mycore latest 44150b234924 About a minute ago 332 MB
docker.io/microsoft/dotnet latest 521411f3b61d 3 days ago          1.73 GB

除了我们从官网拉取的aspnetcore镜像,还有一个我们自己创建的镜像:mycore。

3.运行容器

[root@localhost tmp]# docker run --name mycore -p 8080:80 -d mycore

第一个mycore表示容器名称,第二个mycore表示镜像名称

注意 -p 8080:80端口号,前面是对外的端口号,可随便设置,通过http://ip:8080访问,后面是容器对外的端口,但又不是上面EXPOSE 8080设置的端口,应该是镜像封装了反射代理,把EXPOSE 8080设置的端口映射到80端口了,经过实验,用该镜像时,这个端口还必须设置成80,否则不通。这是第一次使用时容易蒙圈的地方。

执行后会出现新容器的ID:2859330db3a5c6113b0ccdf6e9d78e7e36ea17f6c4de495514c4ec8901ed9218

4.执行curl命令访问我们的网站

[root@localhost tmp]# curl http://localhost:8080

运行结果:

{"str":"test","environmen":null,"username":null,"password":null}

[root@localhost tmp]# curl http://192.168.1.160:8080

用IP访问看到的结果也是一样的:

{"str":"test","environmen":null,"username":null,"password":null}

或者是在windows操作系统里的浏览器地址栏输入:http://192.168.1.160:8080/看到的结果也是一样的。

至此大功告成。

5.进入容器

[root@localhost tmp]# docker exec -it mycore /bin/bash

exec命令可以进入docker容器,然后像使用centos操作系统一样。在里面进行操作。

使用docker部署Asp.net core web应用程序的更多相关文章

  1. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

    想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...

  2. Asp.Net Core Web应用程序—探索

    前言 作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要. 因为,目前微软已经搞出了两个框架了,一个是Net标准( ...

  3. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

    本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...

  4. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  5. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  6. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  7. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

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

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

  9. docker部署Asp.Net Core、Nginx、MySQL

    2019/10/24,docker19.03.4, .netcore 3.0,CentOS7.6 摘要:asp.net core 3.0 网站项目容器化部署,使用docker-compose编排Ngi ...

随机推荐

  1. Java如何获取URL连接的日期?

    Java编程中,如何获取URL连接的日期? 以下示例演示如何使用HttpURLConnection类的httpCon.getDate()方法获取URL连接的日期. package com.yiibai ...

  2. Oracle清理回收站的方法

    原文链接:http://blog.itpub.net/18841027/viewspace-1057765/ purge DBA_RECYCLEBIN用于删除Oracle数据库回收站的所有数据,需要s ...

  3. [React] 08 - Tutorial: evolution of code-behind

    有了七篇基础学习,了解相关的知识体系,之后便是系统地再来一次. [React] 01 - Intro: javaScript library for building user interfaces ...

  4. WebApi中的Session与Token间的处理对接

    首先,说起来创建session,一般会针对注册登录或者授权等情况: session 从字面上讲,就是会话.这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长 ...

  5. Hbase学习之windows单机版搭建

    1. 下载hadoop-common-2.2.0-bin-master   hbase-1.0.2  并解压 2. 配置 修改 三个个环境变量 2.1 JAVA_HOME(如果没有配置请先配置 确保电 ...

  6. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验五:按键模块④ — 点击,长点击,双击

    实验五:按键模块④ - 点击,长点击,双击 实验二至实验四,我们一共完成如下有效按键: l 点击(按下有效) l 点击(释放有效) l 长击(长按下有效) l 双击(连续按下有效) 然而,不管哪个实验 ...

  7. day_5.22 py

    #!/usr/bin/env/python #-*-coding:utf-8-*- ''' 私有化 __相当于prevate 外部不能直接调用,只能通过set get方法用 property ''' ...

  8. K - Super A^B mod C

    Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B ...

  9. 使用 systemctl 创建 ss 开机

    有自启动脚本.可以设置开机自启. 下载python 安装 ss就不说了.使用 systemctl 创建ss开机自启服务. 创建配置文件 vim /usr/lib/systemd/system/shad ...

  10. 在Ubuntu上安装Chrome Driver和Firefox Driver

    在Ubuntu上安装Chrome Driver和Firefox Driver 此文章只介绍Chrome Driver(Firefox Driver和该步骤相同) 下载链接:http://chromed ...