docker部署.netcore程序


 鏡像 (Image)

  • 本質上由分層的文件系統組成,可以基於基礎鏡像通過文件系統分層進行繼承
  • 鏡像是靜態的概念,其每一層文件系統都是只讀的

容器 (Container)

  • 容器由鏡像創建,容器被創建時本質上是在鏡像分層文件系統的頂部,添加一個可讀寫的新層即容器層,容器層之下的為鏡像層
  • 一個鏡像可以創建多個容器,新創建的容器層相互獨立,共享鏡像層資源
  • 容器與鏡像類似於對象和類的關系,鏡像是用於創建容器的模板,容器是由鏡像創建的實體

1.dockerfile指令

FROM

FROM <image>    #系統版本

FROM <image>:<tag> #系統版本+版本號

一般格式:FROM CentOS:7.2

在.netcore中一般是:FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base

MAINTAINER  #編輯作者的信息
RUN #基礎鏡像命令

RUN linux命令

一般使用&&連起來寫防止鏡像膨脹過大

ADD/COPY #從本地向制作的鏡像中賦值文件,ADD可以復制url,可以賦值tar並解壓。一般使用copy就行
ENTRYPOINT  #容器啟動后執行的命令
EXPOSE  #聲明的僅僅是端口,在使用docker run -p時,會自動隨機映射EXPOSE的端口
WORKDIR /app #工作目錄,必須是已經創建好的。docker build構建鏡像的過程中每一個run都會新建一層,只用通過此指令指定的目錄才會在每一層都存在

2.netcore單系統部署

2.1事例Dockerfile文件

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
EXPOSE 5000
COPY . .
ENTRYPOINT ["dotnet", "testDocker.dll", "--urls", "http://*:5000;http://*:5001"]

2.2創建鏡像

   執行格式:docker build -t <要生成的鏡像的名稱>  .   

        k8swebapi為鏡像的名稱

     結尾的 . 指dockerfile路徑(.是代表上下文路徑,因為dockerfile就在當前目錄下)

docker build -t imgtestdocker .

2.3創建容器並啟動容器

    使用docker run  

    -d代表是后台運行容器

    --rm指定容器停止后自動刪除容器, 用docker stop  contriner 停止后自動刪除該容器

    --P(大寫)  宿主主機自動分配端口並關聯容器暴露的5000端口,外部使用宿主主機自動分配的端口訪問web api服務

    --name    容器名稱

docker run -d --rm -P --name contTestDock imgtestdock

2.4.通過docker ps查看創建的容器,和宿主自動分配的端口49153。 容器內訪問api服務端口5000, 容器外訪問api服務端口49453

docker ps

 

PS:進入contTestDock容器,查看app目錄,再請求api服務,如下所示:

docker exec -it dockerid bash
date #查看時間

docker exec -it 6a13d5065941 /bin/bash

 

 訪問結果

部署文件升級

1.將本地文件復制到容器中

  docker cp 本地路徑 容器Id或name:容器目錄

2.將容器中的文件復制到本地文件

docker cp 容器Id或name:鏡像路徑 本地路徑
docker cp /root/dsyzpapiupdate/ykdocker/ contTestDock:/ 

docker restart
contTestDock

 

3.系統的伸縮部署和擴容

4.軟件的docker部署方式,如mysql,gitlab。

5.時區問題

docker run -v /etc/localtime:/etc/localtime


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM