注一、本文軟件環境: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