1.什么是Docker
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
2.為什么使用Docker
使用Docker容器技術可以再全平台發布應用和服務。總所周知,.Net平台一直因為不開源以及不能跨平台詬病。小編又是一名忠實的微軟粉,可是不能使用Linux作為實體服務器的.Net平台在現在分布式系統遍地,微服務縱橫的天下,真的是舉步維艱。還好有個Docker容器技術,解決這個問題,所以小編靠閑暇時間填了不少坑,也是部署出來了,這里跟大家分享一下。
PS:為什么不使用其他的方式(依賴框架等)來在linux上發布.NetCore應用。一次配置全平台都可以用呀!這還用說啊,帥啊!!!!
3.安裝Docker
安裝Docker有很多方式,小編也試了好幾種,但是因為國內網速的限制有些方式會很慢,甚至因為太慢暫停下載。而有些方式安裝完卻有很多很多的問題,這里小編也把自己遇到的坑分享給大家。
這里給大家分享兩種安裝方式,實測有效。Docker分兩個版本,Docker-ce和Docker-ee,后者是收費的,小編這里裝ce版本。
(1)使用yum安裝
安裝一些必要的系統工具:PS:sudo表示以管理員權限執行,如是root用戶(最高權限)可不輸入
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加軟件源信息:
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 緩存:
$ sudo yum makecache fast
安裝 Docker-ce:
$ sudo yum -y install docker-ce
啟動 Docker 后台服務
$ sudo systemctl start docker
測試運行 hello-world
$ docker run hello-world
(2)使用腳本安裝 Docker 吃網速,網速快可選擇
確保 yum 包更新到最新。
$ sudo yum update
執行 Docker 安裝腳本。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
啟動 Docker 進程。
$ sudo systemctl start docker
驗證 docker 是否安裝成功並在容器中執行一個測試的鏡像
$ sudo docker run hello-world
(3)Docker常用命令
$ docker pull 鏡像名 //拉取鏡像,我要部署的應用可能會需要依賴一些基礎鏡像
$ docker build 自定義鏡像名 . //把自己的項目編譯成鏡像,部署到Docker容器中,別忘了這個‘.’!!!
$ docker images //查看所有鏡像
$ docker run --name=容器名 -p 主機環境端口:Docker容器映射端口 -d 鏡像名 //運行鏡像
$ docker ps -a // 查看容器運行狀態,up運行成功
$ docker logs -t -f 容器名 //查看運行日志,可以從中看到出現的問題
4.部署.NetCore應用到Docker
(1)新建一個 ASP.NET Core 3.0 項目

然后運行一下項目,確保我們剛剛建立的項目可以正常運行
(2)編寫Dockerfile,並設置屬性復制到生成文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim
RUN cd /usr/local/src
RUN mkdir MyTestApi
WORKDIR /usr/local/src/MyTestApi
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "MyTestApi.dll"]
(3)發布項目

(4)將Dockerfile文件復制到發布成功的目錄,並全部上傳到服務器

(5)構建Docker鏡像
進入到發布文件目錄(Dockerfile文件所在目錄),執行命令便可打包鏡像
$ docker pull microsoft/dotnet:3.0-aspnetcore-runtime //拉取基礎鏡像
$ docker build -t mytestapi . //構建鏡像 別忘了這個點“.”!!!
$ docker run --name=mytestapi -p 80:80 mytestapi //運行鏡像
出現一長串字符串,便是表示運行成功

5.部署.NetCore到Docker遇到的問題


如果更新.net core代碼怎么辦,使用暴力方法:
進入目錄
cd /usr/local/src/mytestapi
停止
docker stop mytestapi
刪除
docker container rm mytestapi
編譯
docker build -t mytestapi .
運行
docker run --name=mytestapi -p 80:80 mytestapi
6.總結
到這里吶今天的內容就到此結束了,感覺大家翻閱。