1. 程式人生 > 其它 >CentOS下安裝Docker,併發布.NET5程式

CentOS下安裝Docker,併發布.NET5程式

注一、本文軟體環境:CentOS7 2003、Docker 20.10.7、MobaXterm、FileZilla,其它版本也許會存在差異

注二、執行命令過程中,出現下圖的提示,一般都輸入y

================================================================================

我這裡是用VMware palyer跑CentOS的,簡易安裝過程:https://www.cnblogs.com/shousiji/p/14922595.html

安裝好後,輸入賬號密碼第一次進入系統,就開始下面的步驟。

一、網路配置

1. 輸入命令“ping www.jd.com”檢查下網路,如果可以ping,則跳過下面2-4的步驟

2. 執行:vi /etc/sysconfig/network-scripts/ifcfg-ens33

3. 按“Insert”鍵進入編輯模式,把“ONBOOT=no”改為“ONBOOT=yes”;按Esc鍵退出編輯模式,輸入“:wq”退出

4. 重啟網路服務,命令“service network restart”

5. 執行命令“ifconfig”,如果無法執行,則執行命令“sudo yum install net-tools”進行安裝;

如果安裝完還是無法使用“ifconfig”的話,請重啟作業系統。記住IP,下面的步驟會用到。

二、使用SSH工具連線CentOS

本文使用MobaXterm,選擇SSH,填入IP、Port即可。

成功連線系統後,就可以複製貼上命令,不需要手敲了。

三、Docker的安裝

1、Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視你當前的核心版本

$ uname-r
-----------------------------------------------------------------------------------------------------

2、使用root許可權登入 Centos。確保 yum 包更新到最新。

$ sudoyumupdate
-----------------------------------------------------------------------------------------------------

3、解除安裝舊版本(如果安裝過舊版本的話)

$ sudoyumremove docker docker-common docker-selinux docker-engine

-----------------------------------------------------------------------------------------------------

4、安裝需要的軟體包,yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

$ sudoyuminstall-y yum-utils device-mapper-persistent-data lvm2
-----------------------------------------------------------------------------------------------------

5、設定yum源

$sudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

-----------------------------------------------------------------------------------------------------

6、可以檢視所有倉庫中所有docker版本,並選擇特定版本安裝

$ yumlist docker-ce --showduplicates | sort-r

-----------------------------------------------------------------------------------------------------

7、本文直接安裝最新版docker

$ sudoyuminstalldocker-cedocker-ce-cli containerd.io

-----------------------------------------------------------------------------------------------------

8、啟動並加入開機啟動

$ sudosystemctl start docker

$ sudosystemctl enable docker

-----------------------------------------------------------------------------------------------------

9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

$ dockerversion
-----------------------------------------------------------------------------------------------------

本段摘抄自:https://www.cnblogs.com/yufeng218/p/8370670.html

四、建立.NET5 Web API專案

1. 勾選“啟用Docker”;或者在建立好後,專案右鍵 => 新增 => Docker支援。

2. 會自動建立Dockerfile檔案,右鍵屬性,把它設定為“始終複製”;預設配置如下:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["WebApplication5/WebApplication5.csproj", "WebApplication5/"]
RUN dotnet restore "WebApplication5/WebApplication5.csproj"
COPY . .
WORKDIR "/src/WebApplication5"
RUN dotnet build "WebApplication5.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication5.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication5.dll"]

這種方式需要把專案原始碼上傳到伺服器,在docker中進行編譯、釋出,這樣部署到CentOS上會有個坑:

https://www.cnblogs.com/xhznl/archive/2020/06/09/13081708.html

方案一、方案二我都測試過OK的。

3. 如果想使用vs釋出後再上傳伺服器的,那麼就是以下配置。保留base和final,但final要做點修改。

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM base AS final
# 從當前檔案目錄,複製檔案到docker目錄
COPY . . 
ENTRYPOINT ["dotnet", "WebApplication5.dll"]

4. 開啟FTP工具(本文使用FileZilla,MobaXterm也有FTP功能,各位看自己喜好),

填好引數進行快速連線;將釋出後的檔案上傳到CentOS中,自己按需建立資料夾。

五、執行應用程式

1.開啟MobaXterm,登入到CentOS,定位到你的目錄

3. 建立docker映象(注意結尾的點,xxx換成你想要的映象名稱)

docker build -t xxx .

4. 檢視映象列表

docker images

可以看到,Dockerfile中base配置的環境也自動安裝上了:

5. 執行並隨機埠(這裡P是大寫的)

docker run -P xxx

或者指定埠(這裡p是小寫的)

docker run -p ip:hostPort:containerPort xxx
//示例:docker run -p 0.0.0.0:49154:80 xxx

另外,可以把xxx設為開機啟動,只需在xxx前面加上“--restart=always”

6. 新開一個視窗,檢視容器列表

//檢視正在執行的
docker ps
//檢視所有
docker ps -a 

就可以看到對外的埠了:

7. 瀏覽器輸入CentOS的IP,加查詢到的埠,再加API地址,

如:http://192.168.134.128:49154/WeatherForecast

================================================================================

附錄1刪除容器、映象的操作:

1.執行“docker ps -a”,檢視容器狀態

2.如果容器狀態不是Exited

  執行停止命令:docker stop {CONTAINER ID}

  如:docker stop b7131e8b1189

3.執行刪除命令:docker rm {CONTAINER ID}

  如:docker rm b7131e8b1189

4.執行“docker images”,檢視映象列表

5.執行刪除命令:docker rmi {IMAGE ID}

  如:docker rmi b0319c777ef3