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