使用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表示命名空間

相關文章
相關標籤/搜索