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 或 vi /etc/sysconfig/network-scripts/ifcfg-eth0,根據你實際文件名輸入

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

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

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

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

或者使用ip命令“ip addr show ens33”,參考:https://www.cnblogs.com/gispathfinder/p/6158257.html

 

二、使用SSH工具連接CentOS

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

  成功連接系統后,就可以復制粘貼命令,不需要手敲了。

 

三、Docker的安裝

1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看你當前的內核版本

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

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。

$ sudo yum update
 -----------------------------------------------------------------------------------------------------

3、卸載舊版本(如果安裝過舊版本的話)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

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

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

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
 -----------------------------------------------------------------------------------------------------

5、設置yum源

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

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

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

$ yum list docker-ce --showduplicates | sort -r

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

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

$ sudo yum install docker-ce docker-ce-cli containerd.io 

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

8、啟動並加入開機啟動

$ sudo systemctl start docker

$ sudo systemctl enable docker

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

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

$ docker version
 -----------------------------------------------------------------------------------------------------

本段摘抄自: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換成你想要的鏡像名稱,注意結尾的點(它表示Dockerfile在當前目錄)

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.執行“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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM