Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。linux
使用Docker容器技術能夠再全平臺發佈應用和服務。總所周知,.Net平臺一直由於不開源以及不能跨平臺詬病。小編又是一名忠實的微軟粉,但是不能使用Linux做爲實體服務器的.Net平臺在如今分佈式系統遍地,微服務縱橫的天下,真的是舉步維艱。還好有個Docker容器技術,解決這個問題,因此小編靠閒暇時間填了很多坑,也是部署出來了,這裏跟你們分享一下。docker
PS:爲何不使用其餘的方式(依賴框架等)來在linux上發佈.NetCore應用。一次配置全平臺均可以用呀!這還用說啊,帥啊!!!!centos
安裝Docker有不少方式,小編也試了好幾種,可是由於國內網速的限制有些方式會很慢,甚至由於太慢暫停下載。而有些方式安裝完卻有不少不少的問題,這裏小編也把本身遇到的坑分享給你們。api
這裏給你們分享兩種安裝方式,實測有效。Docker分兩個版本,Docker-ce和Docker-ee,後者是收費的,小編這裏裝ce版本。緩存
安裝一些必要的系統工具:PS:sudo表示以管理員權限執行,如是root用戶(最高權限)可不輸入服務器
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2app
添加軟件源信息:框架
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repocurl
更新 yum 緩存:分佈式
$ sudo yum makecache fast
安裝 Docker-ce:
$ sudo yum -y install docker-ce
啓動 Docker 後臺服務
$ sudo systemctl start docker
測試運行 hello-world
$ docker run hello-world
確保 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
$ docker pull 鏡像名 //拉取鏡像,我要部署的應用可能會須要依賴一些基礎鏡像
$ docker build 自定義鏡像名 . //把本身的項目編譯成鏡像,部署到Docker容器中,別忘了這個‘.’!!!
$ docker images //查看全部鏡像
$ docker run --name=容器名 -p 主機環境端口:Docker容器映射端口 -d 鏡像名 //運行鏡像
$ docker ps -a // 查看容器運行狀態,up運行成功
$ docker logs -t -f 容器名 //查看運行日誌,能夠從中看到出現的問題
(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 //運行鏡像
出現一長串字符串,即是表示運行成功
若是更新.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
到這裏吶今天的內容就到此結束了,感受你們翻閱。