zoukankan      html  css  js  c++  java
  • 使用docker部署Asp.net core web应用程序

    要想参考本文做实验,可以参考上一篇文章,关于docker的简单操作,写的比较详细。

    拉取aspnetcore最新docker镜像

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

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

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

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

    [root@localhost ~]# docker images
    REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
    docker.io/microsoft/aspnetcore   latest              c4ca78cf9dca        2 weeks ago         325 MB

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

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

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

    [root@localhost ~]# docker run -it c4ca78cf9dca

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

    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"]

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

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

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

    COPY表示拷贝当前系统下的哪个目录,这里是songlou目录

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

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

    想办法将你的asp.net core web发布程序拷贝到centos系统的/tmp临时目录

    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/aspnetcore   latest              c4ca78cf9dca        2 weeks ago          325 MB

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

    3.运行容器

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

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

    执行后会出现新容器的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操作系统一样。在里面进行操作。

    参考文档:

    https://hub.docker.com/r/microsoft/aspnetcore/

    https://www.cnblogs.com/jjg0519/p/6743645.html

    以后有时间会介绍如何将自己的镜像推送到阿里云的镜像仓库。

    将自己的镜像推送到阿里云

    参考之前的步骤重新创建一个镜像:1.制作dockerfile文件;2.准备发布程序

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

    运行docker images命令查看新镜像的image id

    [root@localhost tmp]# docker images

    Image id每次都不一样,我这次试验的值是:662ac0297c4f

    登录阿里云

    [root@localhost tmp]# docker login --username=[你的阿里云账号] registry.cn-hangzhou.aliyuncs.com 

    给镜像打上tag

    [root@localhost tmp]#

    docker tag 662ac0297c4f registry.cn-hangzhou.aliyuncs.com/songlou/webapp:1.0 

    推送镜像到阿里云

    [root@localhost tmp]# docker push registry.cn-hangzhou.aliyuncs.com/songlou/webapp:1.0 

    特别注意每次测试,创建的镜像ID都是不同的。

    registry.cn-hangzhou.aliyuncs.com表示域名

    songlou表示命名空间

  • 相关阅读:
    Windows下的RabbitMQ安装:RabbitMQ_Service安装
    [Java]private, public,protected,friendly的区别(转载)一下子就记住了
    mysql的一些sql用法
    set(string str)变量传参为int的问题
    eclipse插件开发常见的问题及解决办法
    eclipse 内存溢出
    如何在一台机器上运行2个Tomcat
    eclipse svn使用
    eclipse遇到的异常
    oracle学习
  • 原文地址:https://www.cnblogs.com/subendong/p/8992285.html
Copyright © 2011-2022 走看看