.net core應用程序docker容器化部署+容器編排(linux環(huán)境)

環(huán)境準備

需要一個linux操作系統(tǒng):我這里用的是ubuntu 18.04,安裝步驟就不說了惩猫,網(wǎng)上很多教程芝硬,當然也可以私信我。

既然需要用到docker轧房,那么就安裝個docker拌阴,apt install docker-ce。

root@pims_server:/# docker -v
Docker version 19.03.7, build 7141c199a2

查看版本奶镶,這樣docker就算是成功安裝好了迟赃。

加載基礎鏡像

為了到時候build鏡像的時候快一點,我們可以先準備下基礎基礎鏡像厂镇,我這里用的是2.2版捺氢,只要runtime即可。

root@pims_server:~# docker pull microsoft/dotnet:2.2-aspnetcore-runtime

下載完成之后剪撬,執(zhí)行docker images可以查看所有鏡像摄乒。

root@pims_server:~# docker images
REPOSITORY          TAG                      IMAGE ID            CREATED             SIZE
microsoft/dotnet    2.2-aspnetcore-runtime   e7e3b238011c        3 months ago        261MB

新建一個.netcore應用程序

這里就不細講了,我提前準備好了一個項目,發(fā)布之后馍佑,把publish文件夾拷貝到linux系統(tǒng)中斋否,如下所示:

root@pims_server:/mnt/share/schedule_web# ll
total 13794
drwxrwxrwx 1 root root   20480 Mar 23 08:49 ./
drwxrwxrwx 1 root root    4096 Mar 25 07:39 ../
drwxrwxrwx 1 root root    4096 Mar 23 08:49 Configs/
-rwxrwxrwx 1 root root     155 Mar 20 10:13 Dockerfile*
-rwxrwxrwx 1 root root  153600 Mar 23 08:43 WebApi.dll*
-rwxrwxrwx 1 root root   58032 Mar 23 08:43 WebApi.pdb*
-rwxrwxrwx 1 root root     224 Mar 23 08:43 PimsSchedulingWebApi.runtimeconfig.json*
-rwxrwxrwx 1 root root  281600 Mar 23 09:05 PimsSchedulingWebApi.Views.dll*
-rwxrwxrwx 1 root root    7800 Mar 23 08:43 PimsSchedulingWebApi.Views.pdb*
-rwxrwxrwx 1 root root     537 Mar 23 08:43 web.config*
drwxrwxrwx 1 root root       0 Mar 23 08:49 wwwroot/

我把上面的文件刪除了以部分,大概就那么個意思拭荤,理解就可以了茵臭,至于如何拷貝到linux有很多種方法,有遠程工具可以直接通過xftp上傳舅世,因為我是用的VirtualBox虛擬機旦委,可以直接利用共享文件夾,掛載到linux上即可雏亚。
掛載共享文件夾命令:sudo mount -t vboxsf Shared /mnt/share
Shared是共享文件夾名稱缨硝,/mnt/share是要掛載到的目標路徑。

Dockerfile

我們可以看到這里面就是項目生成的dll文件罢低,還有一個Dockerfile文件查辩,這是build鏡像是要用到的。

FROM microsoft/dotnet:2.2-aspnetcore-runtime
MAINTAINER zhanwei
COPY . /app
WORKDIR /app
EXPOSE 8000
ENTRYPOINT ["dotnet", "WebApi.dll"]

這就是我的Dockerfile,很簡單microsoft/dotnet:2.2-aspnetcore-runtime是基礎鏡像网持。
COPY:
復制指令宜岛,從上下文目錄中復制文件或者目錄到容器里指定路徑。

WORKDIR:
指定工作目錄功舀。用 WORKDIR 指定的工作目錄萍倡,會在構(gòu)建鏡像的每一層中都存在。(WORKDIR 指定的工作目錄辟汰,必須是提前創(chuàng)建好的)列敲。
docker build 構(gòu)建鏡像過程中的,每一個 RUN 命令都是新建的一層莉擒。只有通過 WORKDIR 創(chuàng)建的目錄才會一直存在酿炸。

EXPOSE:
僅僅只是聲明端口瘫絮。
作用:
幫助鏡像使用者理解這個鏡像服務的守護端口涨冀,以方便配置映射。
在運行時使用隨機端口映射時麦萤,也就是 docker run -P 時鹿鳖,會自動隨機映射 EXPOSE 的端口。

ENTRYPOINT:
類似于 CMD 指令壮莹,但其不會被 docker run 的命令行參數(shù)指定的指令所覆蓋翅帜,而且這些命令行參數(shù)會被當作參數(shù)送給 指令指定的程序。但是, 如果運行 docker run 時使用了 --entrypoint 選項命满,此選項的參數(shù)可當作要運行的程序覆蓋 ENTRYPOINT 指令指定的程序涝滴。
優(yōu)點:在執(zhí)行 docker run 的時候可以指定 ENTRYPOINT 運行所需的參數(shù)。
注意:如果 Dockerfile 中如果存在多個 ENTRYPOINT 指令,僅最后一個生效歼疮。

Build鏡像

都準備好了之后杂抽,執(zhí)行docker build命令,注意最后有一個.韩脏,少了這個點是執(zhí)行不成功的缩麸。

root@pims_server:/mnt/share/schedule_web# sudo docker build -t schedule_web:1.0 .
Sending build context to Docker daemon  19.02MB
Step 1/6 : FROM microsoft/dotnet:2.2-aspnetcore-runtime
 ---> e7e3b238011c
Step 2/6 : MAINTAINER zhanwei
 ---> Running in a42940177b66
Removing intermediate container a42940177b66
 ---> b9eb0d8cd441
Step 3/6 : COPY . /app
 ---> 810d14b5a4a0
Step 4/6 : WORKDIR /app
 ---> Running in 97360f19bf80
Removing intermediate container 97360f19bf80
 ---> 092ed5dc0364
Step 5/6 : EXPOSE 8000
 ---> Running in 46593eb29da3
Removing intermediate container 46593eb29da3
 ---> 397cf3432ae2
Step 6/6 : ENTRYPOINT ["dotnet", "WebApi.dll"]
 ---> Running in add035b834d4
Removing intermediate container add035b834d4
 ---> 40b10808fc7c
Successfully built 40b10808fc7c
Successfully tagged schedule_web:1.0
root@pims_server:/mnt/share/schedule_web#

好的,成功了赡矢,現(xiàn)在查看一下images杭朱,可以看到剛剛構(gòu)建的鏡像了

root@pims_server:/mnt/share/schedule_web# docker images
REPOSITORY          TAG                      IMAGE ID            CREATED             SIZE
schedule_web        1.0                      40b10808fc7c        25 seconds ago      279MB
microsoft/dotnet    2.2-aspnetcore-runtime   e7e3b238011c        3 months ago        261MB

創(chuàng)建容器并啟動容器,-p映射端口吹散,5000是容器內(nèi)部端口弧械,8000是本機對外開放端口。

root@pims_server:docker run -it -p 8000:5000 schedule_web:1.0

容器編排docker-compose

當我們有多個服務要部署時送浊,可以用容器編排梦谜,可以同時啟動多個容器。
比如現(xiàn)在有一個后臺定時服務袭景、一個前端服務唁桩。那么為了方便我只有通過compose up命令就可以了。

root@pims_server:/# docker images
REPOSITORY          TAG                      IMAGE ID            CREATED              SIZE
schedule_server     1.0                      163b44854f0d        About a minute ago   279MB
schedule_web        1.0                      40b10808fc7c        4 minutes ago        279MB
microsoft/dotnet    2.2-aspnetcore-runtime   e7e3b238011c        3 months ago         261MB

查看docker-compose版本耸棒,順便檢查下服務器是否安裝荒澡。

root@pims_server:/home/zhanwei# docker-compose --version
docker-compose version 1.23.2, build unknown
root@pims_server:/home/zhanwei#

docker-compose.yml文件

version: '3'
services:
  #啟動注冊中心eureka-server集群 集中管理/服務注冊/服務發(fā)現(xiàn)
  schedule_web:
    container_name: schedule_web
    image: schedule_web:1.0
    ports:
      - "8000:5000"
    environment:
      appId: testid
      appSecret: testsecret
      baseUrl: http://127.0.0.1:8080/api/openapi/orgs/v1/
      db_server: 127.0.0.1
      db_port: 3306
      db_type: mysql
      db_user: root
      db_pwd: 123456
      db_name: schedule_8000
  schedule_server:
    container_name: schedule_server
    image: schedule_server:1.0
    environment:
      db_server: 127.0.0.1
      db_port: 3306
      db_type: mysql
      db_user: root
      db_pwd: 123456
      db_name: schedule_8000

執(zhí)行命令docker-compose up -d,我們看下結(jié)果:

root@pims_server:/home/zhanwei# docker-compose up -d
Creating schedule_web    ... done
Creating schedule_server ... done
root@pims_server:/home/zhanwei#

已經(jīng)啟動完成了与殃。单山。。

docker-compose命令解析:
up:
啟動所有在Compose問中定義的容器幅疼,并且把它們的日志信息匯集在一起米奸。通常會添加-d參數(shù)(在up后面),讓容器在后臺執(zhí)行
start:啟動指定的已經(jīng)存在的容器爽篷。
build:重新建造由Dockerfile構(gòu)建的鏡像悴晰。
ps:獲取由Compose管理的容器的狀態(tài)信息。
run:啟動一個容器逐工,并允許一個一次性的命令铡溪。被連接的容器會同時啟動,除非用了 --no-deps參數(shù)泪喊。
logs:匯集由Compose管理的容器的日志棕硫,并以彩色輸出。
stop:停止容器袒啼,但不會刪除它們哈扮。
rm:刪除已停止的容器纬纪。不要忘記使用-v參數(shù)來刪除任何由Docker管理的數(shù)據(jù)卷。

查看一下容器

root@pims_server:/# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                              NAMES
77677298c7f9        schedule_server:1.0   "dotnet PimsScheduli…"   25 minutes ago      Up 25 minutes                                          schedule_server
bc5502237d9e        schedule_web:1.0      "dotnet PimsScheduli…"   25 minutes ago      Up 25 minutes       8000/tcp, 0.0.0.0:8001->5000/tcp   schedule_web

轉(zhuǎn)載請注明出處滑肉,另外請關注我哦育八!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赦邻,隨后出現(xiàn)的幾起案子髓棋,更是在濱河造成了極大的恐慌,老刑警劉巖惶洲,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件按声,死亡現(xiàn)場離奇詭異,居然都是意外死亡恬吕,警方通過查閱死者的電腦和手機签则,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铐料,“玉大人渐裂,你說我怎么就攤上這事∧瞥停” “怎么了柒凉?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長篓跛。 經(jīng)常有香客問我膝捞,道長,這世上最難降的妖魔是什么愧沟? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任蔬咬,我火速辦了婚禮,結(jié)果婚禮上沐寺,老公的妹妹穿的比我還像新娘林艘。我一直安慰自己,他們只是感情好混坞,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布狐援。 她就那樣靜靜地躺著,像睡著了一般拔第。 火紅的嫁衣襯著肌膚如雪咕村。 梳的紋絲不亂的頭發(fā)上场钉,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天蚊俺,我揣著相機與錄音,去河邊找鬼逛万。 笑死泳猬,一個胖子當著我的面吹牛批钠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播得封,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼埋心,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忙上?” 一聲冷哼從身側(cè)響起拷呆,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疫粥,沒想到半個月后茬斧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡梗逮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年项秉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慷彤。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡娄蔼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出底哗,到底是詐尸還是另有隱情岁诉,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布跋选,位于F島的核電站唉侄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏野建。R本人自食惡果不足惜属划,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望候生。 院中可真熱鬧同眯,春花似錦、人聲如沸唯鸭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽目溉。三九已至明肮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缭付,已是汗流浹背柿估。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陷猫,地道東北人秫舌。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓的妖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親足陨。 傳聞我的和親對象是個殘疾皇子嫂粟,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容