1. 程式人生 > >CentOS7下Docker與.net Core 2.2

CentOS7下Docker與.net Core 2.2

tar 更新 ast dll roo 意思 ror round localhost

原文:CentOS7下Docker與.net Core 2.2

一、使用 yum 安裝(CentOS 7下) 

  Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。

  通過 uname -r 命令查看你當前的內核版本

  技術分享圖片

二、安裝 Docker 

  從 2017 年 3 月開始 docker 在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE。

  Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。

  1、移除舊的版本 

$ sudo yum remove docker                   docker
-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

  2、安裝一些必要的系統工具

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

  3、添加軟件源信息 

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  4、更新 yum 緩存

sudo yum makecache fast

  5、安裝 Docker-ce

sudo yum -y install docker-ce

  6、啟動 Docker 後臺服務 

sudo systemctl start docker

  7、測試運行 hello-world 

[[email protected] /]# docker run hello-world

  技術分享圖片

二、Asp.Net Core2.2 web程序

  技術分享圖片

  dockerfile是你的應用部署到docker上所必須的配置信息,只是個不帶擴展名的純文本文件而已

  技術分享圖片

  設置Makefile屬性【始終復制

  技術分享圖片

  Dockerfile內容為

  

 1 FROM microsoft/dotnet:2.2-aspnetcore-runtime  #基礎鏡像為dotnetcore
 2 MAINTAINER demo                    #作者
 3 
 4 LABEL description="this is a test website"  #描述
 5 LABEL version="1.0"                 #描述
 6 
 7 WORKDIR /app                    #工作目錄
 8 COPY . .                      #將當前目錄下的文件,復制到WORKDIR目錄
 9 EXPOSE 8888                    #容器暴漏8888端口,與上一步設置的端口一致
10 ENTRYPOINT ["dotnet","demo.dll"]      #運行容器的命令

  修改Program.cs文件

 1 namespace demo
 2 {
 3     public class Program
 4     {
 5         public static void Main(string[] args)
 6         {
 7             CreateWebHostBuilder(args).Build().Run();
 8         }
 9 
10         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
11             WebHost.CreateDefaultBuilder(args)
12                 .UseUrls("http://*:8888")
13                 .UseStartup<Startup>();
14     }
15 }

  發布,文件系統

  默認位置 

demo\bin\Release\netcoreapp2.2\publish

技術分享圖片

  

三、構建鏡像

  1、切換到發布目錄  

[[email protected] publish]

  2、修改Makefile文件

  技術分享圖片

  指定容器對外暴露端口80。註意,COPY .後面有空格,表示是當前位置,意思是從當前位置復制文件到/publish目錄下

  3、根據當前目錄下dockerfile配置文件,進行打包  

[[email protected] publish]# docker build -t demo .

  技術分享圖片

  4、查看我們打包好的鏡像。

[[email protected] publish]# docker images

  技術分享圖片

  

四、運行docker容器

[[email protected] publish]# docker run -d -p 8888:8888 demo

   -p是進行宿主和容器之間端口的映射,(-p 宿主端口:容器端口)

   -d命令,容器就會一直運行,即使關掉終端窗口

  檢驗docker容器是否運行成功

  技術分享圖片

五、測試

  本機要輸Centos的IP

  技術分享圖片

  Centos內訪問localhost就可以了

  技術分享圖片

說明

  1、配置docker開機啟動

systemctl  enable docker

  2、確認容器有在運行

[[email protected] /]# docker ps

  技術分享圖片

  CONTAINER ID:容器ID

  NAMES:自動分配的容器名稱

  在容器內使用docker logs命令,查看容器內的標準輸出

  3、開始/停止容器

[[email protected] /]# docker start/stop  容器id或者容器名

  4、重啟docker服務,遇到此類錯誤

  技術分享圖片

  原因是docker服務掛掉了 

systemctl restart docker

  

CentOS7下Docker與.net Core 2.2