使用docker部署Asp.net core web应用程序

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

拉取aspnetcore最新docker镜像

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

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

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

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

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

若是咱们想拉取指定的aspnetcore版本,可以使用以下命令:centos

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

咱们能够执行下面的命令基于该镜像建立一个容器,并进入该容器:浏览器

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

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

root@66095a66dce1:/# exit

制做本身的应用镜像

1.建立Dockerfile文件app

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

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

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

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表示命名空间

相关文章
相关标签/搜索