Docker部署.NET6項目的實現(xiàn)步驟
Docker的三大核心概念
1、docker倉庫(repository)
docker倉庫(repository)類似于代碼庫,是docker集中存放鏡像的場所。實際上,注冊服務器是存放倉庫的地方,其上往往存放著很多倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽(tag)來進行區(qū)分。
根據(jù)存儲的鏡像公開分享與否,docker倉庫可以分為公開倉庫(Public)和私有倉庫(Private)兩種形式。目前,最大的公開倉庫是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載,國內(nèi)的公開鏡像包括Docker Pool,可以提供穩(wěn)定的國內(nèi)訪問,與GitHub類似。
2、docker鏡像(Image)
docker鏡像類似于虛擬機鏡像,可以將其理解為一個只讀模板。除了提供容器運行時所需的程序、庫、資源、配置等文件外,docker鏡像還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)
我們把項目打包才成一個鏡像,那么這個鏡像中就有了我們項目所依賴的所有環(huán)境和資源
3、 docker容器(container)
.Net項目部署到Docker
1、生成構(gòu)建Image鏡像文件
Vs中右鍵項目->添加->Docker 支持->目標OS選擇 Linux 在項目中會生成個Dockerfile文件
這個Dockerfile文件就是用來構(gòu)建你項目的Image鏡像的,它是一個創(chuàng)建當前項目鏡像的所有命令的文本文件
2、將你的項目存放到Linux中
我們可以用MobaXterm 或者其他文件工具將我們的項目存放到Linux中,我們就在Linux系統(tǒng)的root文件下創(chuàng)建了一個叫ZKHK的文件用于存放我們的項目代碼,然后我又單獨的將Dockerfile文件單獨的放在了與項目文件夾同級的ZKHK文件夾下。
3、構(gòu)建項目鏡像
#docker build:表示要構(gòu)建鏡像 #myimagename :是我們自己要構(gòu)建的鏡像的名稱,隨便我們自己取名(主要名稱小寫) #dockerfile:是我們要構(gòu)建的鏡像需要的文件,文件名叫Dockerfile docker build -t net6projecttest -f Dockerfile .
構(gòu)建鏡像的時候如果提示:
[Warning] IPv4 forwarding is disabled. Networking will not work.
則需要開啟 Linux 操作系統(tǒng)的 IP 轉(zhuǎn)發(fā)功能
臨時開啟: 如果你只是希望臨時開啟 IP 轉(zhuǎn)發(fā)功能,可以使用以下命令:
sudo sysctl -w net.ipv4.ip_forward=1
永久開啟: 如果你希望永久開啟 IP 轉(zhuǎn)發(fā)功能,需要編輯配置文件,使其在系統(tǒng)重啟時仍然生效
1、編輯 /etc/sysctl.conf
文件
sudo nano /etc/sysctl.conf 或者 sudo vim /etc/sysctl.conf #vim命令打開的文件 按 i 進入編輯狀態(tài) Esc退出編輯 然后按冒號(Shift+:)輸入w !sudo %進行強制保存
2、在文件末尾添加以下行,表示開啟 IP 轉(zhuǎn)發(fā)功能
net.ipv4.ip_forward=1
3、保存并關(guān)閉文件。Ctrl+o,可以修改文件名,Ctrl+x 保存并退出當前文件
4、使修改生效
sudo sysctl -p
現(xiàn)在,IPv4轉(zhuǎn)發(fā)已經(jīng)啟用了。重新啟動網(wǎng)絡服務,你將不再收到“IPv4 forwarding is disabled”的警告消息,并且網(wǎng)絡連接將正常工作。
使用 firewalld 或 iptables 設置轉(zhuǎn)發(fā)規(guī)則: 除了開啟 IP 轉(zhuǎn)發(fā)功能,如果你需要進行網(wǎng)絡地址轉(zhuǎn)發(fā),你還需要設置轉(zhuǎn)發(fā)規(guī)則。你可以使用 firewalld 或 iptables 來進行設置,具體步驟因操作場景和需求而異
1、使用 firewalld
sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --reload
2、使用 iptables
sudo iptables -t nat -A POSTROUTING -o 出口網(wǎng)卡 -j MASQUERADE
3、修改完成后,按下 Ctrl + O
,這將會顯示一個提示,詢問你是否要保存已經(jīng)編輯的內(nèi)容。按下 Enter
鍵,即可確認保存
4、確認保存后,你可以修改文件名(如果需要),然后按下 Enter
鍵
5、最后,按下 Ctrl + X
退出 nano
編輯器
4、根據(jù)鏡像創(chuàng)建并運行容器
Docker容器啟動之前,如果不進行端口映射,在容器外部是無法通過網(wǎng)絡來訪問容器內(nèi)的網(wǎng)絡應用和服務。因為容器中常常會運行一些網(wǎng)絡應用和服務,如果想在容器外部通過網(wǎng)絡來訪問容器內(nèi)的網(wǎng)絡應用和服務,就需要對該容器進行端口映射,可以通過docker run
命令中的-P
或-p
選項來進行端口映射
Docker容器本身是一個獨立的、隔離的環(huán)境,它自己擁有獨立的IP地址。當我們創(chuàng)建并運行一個容器時,它內(nèi)部的應用程序無法直接被主機上的其他應用訪問。因此,我們需要進行端口映射,將容器內(nèi)部的端口與主機的端口進行映射,這樣就能夠通過主機上的端口訪問容器內(nèi)部的應用程序了
舉例:假設我們虛擬機的IP是 192.168.43.10,
我們可以通過HTTP地址(即常說的“網(wǎng)址”)或IP加“: 80”來訪問網(wǎng)站,因為瀏覽網(wǎng)頁服務默認的端口號都是80
我們的項目運行在Docker容器中,而容器外部是無法通過網(wǎng)絡來訪問容器的內(nèi)容部網(wǎng)絡應用和服務的,所以我們就需要將Docker容器的某個端口(如:8083)映射到主機的80端口,這樣我們就可以在外部通過網(wǎng)址+“:8083” 來訪問容器的里應用和服務了。
92.168.43.10:8083 就相當于訪問主機的80端口了。
#8083:80:將容器內(nèi)部的 8083端口映射到主機上的 80端口 #docker8083:容器的名稱,名稱隨便自己取 #net6projecttest :鏡像名稱 docker run -itd -p 8083:80 --name docker8083 net6projecttest docker run -itd -p 8084:80 --name docker8084 net6projecttest
上面就根據(jù)鏡像創(chuàng)建了兩個兩個容器:92.168.43.10:8083和92.168.43.10:8084
到此這篇關(guān)于Docker部署.NET6項目的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署.NET6內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker中Java基礎鏡像OpenJDK和OracleJDK使用方法
OpenJDK是Java社區(qū)的核心項目,由全球各地的開發(fā)者共同參與開發(fā)和維護,OracleJDK在OpenJDK的基礎上添加了一些商業(yè)功能和工具,這篇文章主要給大家介紹了關(guān)于Docker中Java基礎鏡像OpenJDK和OracleJDK使用方法的相關(guān)資料,需要的朋友可以參考下2024-06-06Docker容器之間數(shù)據(jù)傳輸?shù)膶崿F(xiàn)
本文主要介紹了Docker容器之間數(shù)據(jù)傳輸?shù)膶崿F(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03谷歌技術(shù)人員解決Docker鏡像體積太大問題的方法
這篇文章主要介紹了谷歌技術(shù)人員解決Docker鏡像體積太大問題的方法,涉及虛擬機,谷歌docker鏡像構(gòu)建實踐及構(gòu)建工具bazel的介紹等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。2017-11-11使用 Azure Container Registry 儲存鏡像的問題
Azure Container Registry(容器注冊表)是基于 Docker Registry 2.0規(guī)范的托管專用 Docker 注冊表服務。這篇文章主要介紹了使用 Azure Container Registry 儲存鏡像,需要的朋友可以參考下2021-05-05