.NET?6?從0到1使用Docker部署至Linux環(huán)境超詳細(xì)教程
前言
作為一名.Net菜鳥開發(fā)者,平時(shí)對Linux接觸的并不多,項(xiàng)目部署這一塊都是運(yùn)維小哥頂著,但是作為混跡在云原生項(xiàng)目組的人咱也不能什么都不知道,該掌握的知識還是要懂的,所以借著這次機(jī)會,梳理一下項(xiàng)目部署這塊的知識點(diǎn)。如果在閱讀的過程中發(fā)現(xiàn)有什么不合理的地方,還請多多指教!
環(huán)境準(zhǔn)備
VS2022
CentOS 7
Docker Desktop
.NetCore 6.0
Xshell 7
.NET Core項(xiàng)目準(zhǔn)備
1.首先我們先創(chuàng)建一個(gè)空的ASP.NET Core Web應(yīng)用
項(xiàng)目啟用Docker支持,然后會生成一個(gè)Dockerfile文件
我們來解析以下Dockerfile文件里面的內(nèi)容與流程
對多階段構(gòu)建感興趣的同學(xué)可以移步官網(wǎng) 使用多階段構(gòu)建
2.我們可以先在本地將項(xiàng)目構(gòu)建成鏡像看看效果
打開PowerShell 進(jìn)入項(xiàng)目解決方案目錄路徑
接下來我們將項(xiàng)目打包成鏡像:
docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .
注:這里使用 docker build -t aspnetcorewin .
命令也可以,只不過有一些坑,遇到問題了可以在評論區(qū)交流
打包完成,我們可以使用Docker命令來查看鏡像:
docker images
我們也可以使用Docker Desktop客戶端查看鏡像
3.接下來我們將鏡像run起來,構(gòu)造出一個(gè)容器:
docker run --name=aspnetcorewin -p 8801:80 -d aspnetcorewin
- --name :指定容器名稱。
- --p :指定容器端口。
- --d :指定容器后臺運(yùn)行。
查看正在運(yùn)行的鏡像:
docker ps
我們直接本地訪問我們映射的端口:localhost:8801
到這里我們在window上已經(jīng)可以成功訪問我們到項(xiàng)目了
接下來我們先對我們Linux服務(wù)器的環(huán)境進(jìn)行配置,方便后續(xù)部署項(xiàng)目
Linux環(huán)境配置:
使用XShell或其他工具連接上我們的Linux服務(wù)器
1.配置yum
更新yum包
sudo yum update
安裝yum-utils 用來管理yum源
sudo yum install -y yum-utils
查看資源庫中有沒有安裝過的docker rpm包
yum list installed | grep docker
如果之前安裝過可以不用安裝,如果想重新安裝也可以
執(zhí)行卸載老版本docker及其相關(guān)依賴即可:
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
2.安裝docker
yum -y install docker-ce
如果出現(xiàn) No package docker-ce available 錯(cuò)誤,這里我們只需要設(shè)置穩(wěn)定的倉庫,添加yum源即可。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
然后再執(zhí)行安裝Docker命令進(jìn)行安裝就可以了。
我當(dāng)時(shí)安裝的時(shí)候踩了一些坑
1.“sqlite3.OperationalError: database is locked” 這里可能是我之前中斷過yum的更新導(dǎo)致yum進(jìn)程被鎖了,最后把yum更新進(jìn)程殺掉就可以了。
2.安裝過程中一直停留在running transaction
3.啟動docker
啟動docker
sudo systemctl start docker
設(shè)置docker開機(jī)自啟動
sudo systemctl enable docker
查看docker是否運(yùn)行
systemctl status docker
4.安裝.NetCore SDK 6.0
安裝包配置
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
執(zhí)行安裝
sudo yum install dotnet-sdk-6.0
安裝可能會花費(fèi)些時(shí)間,請耐心等待哦!
安裝完成
驗(yàn)證安裝環(huán)境
dotnet --info
OK 環(huán)境配置完成!
Docker部署.NetCore 項(xiàng)目
調(diào)整Dockerfile文件屬性
我們先將Dockerfile文件屬性復(fù)制到輸出目錄的方式調(diào)整為** 如果較新則復(fù)制**,方便我們部署
項(xiàng)目打包,拷貝至Linux服務(wù)器上
接下來我們將項(xiàng)目打包,然后拷貝到linux服務(wù)器編譯發(fā)布
在linux上創(chuàng)建一個(gè)文件夾 NetCoreProgram
然后將我們打包好的項(xiàng)目拷貝至文件夾中
使用linux命令rz(會彈出一個(gè)上傳窗口)
--
運(yùn)行Dockerfile
進(jìn)入解壓完成的文件夾內(nèi)查看文件:
unzip -d NetCoreWeb NetCoreWeb.zip
接下來按照我們上述在window下將項(xiàng)目編譯成鏡像的操作,現(xiàn)在在linux環(huán)境下在執(zhí)行一遍:
編譯成鏡像(注意要在對應(yīng)文件目錄下執(zhí)行命令):
docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .
編譯完成,查看鏡像:
docker images
將鏡像run起來生成容器:
docker run --name=aspnetcore -p 8805:80 -d aspnetcore
查看容器是否生成成功:
docker ps
接下來我們使用curl命令來訪問程序:
curl localhost:8805
OK,訪問正常,到此我們的項(xiàng)目就部署完成啦!
使用外網(wǎng)訪問
使用服務(wù)器地址加開放的端口號:
本機(jī)(windows)直接訪問服務(wù)器地址 http://xxx.xxx.xxx.xx:8805/
OK ,訪問成功
這里使用外網(wǎng)訪問可能會遇到一些問題:
1.需要注意服務(wù)器的防火墻以及開放的端口
2.由于我這里是騰訊云的服務(wù)器,在云上它還有另外的一套安全組策略,也就是云上的防火墻,這里也需要開放端口
到此,我們的項(xiàng)目就部署完成啦!
結(jié)尾
當(dāng)然,這里只是用了最簡單的項(xiàng)目用來部署,實(shí)際情況中已經(jīng)上了CICD與k8s了,但是如果你連最基礎(chǔ)的都玩不轉(zhuǎn)的話,遇到更復(fù)雜的情況只能寸步難行哈。
到此這篇關(guān)于.NET 6 從0到1使用Docker部署至Linux環(huán)境的文章就介紹到這了,更多相關(guān)docker部署至Linux環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- .NET 5 部署在docker上運(yùn)行的方法
- Linux系統(tǒng)Docker 部署 ASP.NET Core應(yīng)用的流程分析
- 部署.Net6項(xiàng)目到docker
- Docker部署Mysql,.Net6,Sqlserver等容器
- ASP.NET Core開發(fā)Docker部署
- .Net?Core部署Docker容器
- 使用Docker部署ASP.NET?Core程序
- .Net項(xiàng)目在Docker容器中開發(fā)部署
- Linux系統(tǒng)docker部署.net?core3.1的詳細(xì)步驟
- .NET?8?部署到?Docker的詳細(xì)過程
- .Net8項(xiàng)目使用docker、docker-compose部署的圖文步驟
相關(guān)文章
Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實(shí)現(xiàn)
這篇文章主要介紹了Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12docker run 運(yùn)行容器自動結(jié)束的解決
這篇文章主要介紹了docker run 運(yùn)行容器自動結(jié)束的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11如何修改docker官方鏡像內(nèi)部內(nèi)容并重新build鏡像
這篇文章主要介紹了如何修改docker官方鏡像內(nèi)部內(nèi)容并重新build鏡像問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法
這篇文章主要介紹了Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法,需要的朋友可以參考下2017-01-01基于spring-boot和docker-java實(shí)現(xiàn)對docker容器的動態(tài)管理和監(jiān)控功能[附完整源碼下載]
Docker 是一個(gè)開源的應(yīng)用容器引擎,和傳統(tǒng)的虛擬機(jī)技術(shù)相比,Docker 容器性能開銷極低,因此也廣受開發(fā)者喜愛。這篇文章主要介紹了基于spring-boot和docker-java實(shí)現(xiàn)對docker容器的動態(tài)管理和監(jiān)控 ,需要的朋友可以參考下2019-06-06給docker創(chuàng)建的elasticsearch容器添加密碼簡單步驟
在使用Elasticsearch(ES)Docker容器時(shí),有時(shí)需要設(shè)置密碼來保護(hù)數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關(guān)于給docker創(chuàng)建的elasticsearch容器添加密碼的簡單步驟,需要的朋友可以參考下2024-02-02docker拉取鏡像錯(cuò)誤missing signature key的解決方法
這篇文章主要介紹了docker拉取鏡像錯(cuò)誤missing signature key的解決方法,當(dāng)我使用docker拉取一個(gè)特定的鏡像時(shí),提示錯(cuò)誤,文中給出了相關(guān)的解決方法,需要的朋友可以參考下2024-03-03使用docker安裝部署NextCloud私人網(wǎng)盤的方法步驟
本文主要介紹了使用docker安裝部署NextCloud私人網(wǎng)盤的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05