Docker倉庫管理鏡像 -- 公共倉庫【Docker Hub】和私人倉庫【Registry】和【harbor】

来源:https://www.cnblogs.com/jiagooushi/archive/2022/08/31/16643288.html
-Advertisement-
Play Games

鏡像倉庫管理 docker倉庫,用來管理鏡像。主要分為公共倉庫和私人倉庫。下麵介紹了公共倉庫Docker Hub、私人倉庫Registry和harbor。 DockerHUb倉庫管理 什麼是DockerHUb 保存和分發鏡像的最直接方法就是使用 Docker Hub。 ​ Docker Hub 是 ...


鏡像倉庫管理

docker倉庫,用來管理鏡像。主要分為公共倉庫和私人倉庫。下麵介紹了公共倉庫Docker Hub、私人倉庫Registry和harbor。

DockerHUb倉庫管理

什麼是DockerHUb

保存和分發鏡像的最直接方法就是使用 Docker Hub。

​ Docker Hub 是 Docker 公司維護的公共 Registry。用戶可以將自己的鏡像保存到 Docker Hub 免費的 repository 中,如果不希望別人訪問自己的鏡像,也可以購買私有 repository。

賬號註冊和登陸

一般,你需要先在docker中心創建一個賬戶(如果您尚未有)。你可以直接在Docker Hub創建你的賬戶。

file

如果有已有賬號可以點擊sign in 進行登錄,登陸後是這個樣子

file

Docker客戶端登錄

使用docker login登錄dockerhub

​ 這將提示您輸入用戶名,這個用戶名將成為你的公共存儲庫的命名空間名稱。如果你的名字可用,docker會提示您輸入一個密碼和你的郵箱,然後會自動登錄到Docker Hub,你現在可以提交和推送鏡像到Docker Hub的你的存儲庫。

docker login

file

出現 Login Succeeded就說明我們登錄成功

註:你的身份驗證憑證將被存儲在你本地目錄的.dockercfg文件中

管理鏡像

通過docker images可以看到我們所有的鏡像列表

docker images

image-20210517112922229

刪除鏡像

我們現在的learn-docker-storage有三個版本,現在我們把前兩個有問題的版本刪除,docker rmi 鏡像ID可以刪除鏡像

docker rmi learn-docker-storage:0.0.1 learn-docker-storage:0.0.2

file

這樣我們就刪除了我們沒有用的鏡像了,可以節省記憶體空間

修改鏡像命名

修改鏡像的 repository 使之與 Docker Hub 賬號匹配。

​ Docker Hub 為了區分不同用戶的同名鏡像,鏡像的 registry 中要包含用戶名,完整格式為:[用戶名]/鏡像名:tag

我們通過 docker tag 命令重命名鏡像

docker tag learn-docker-storage:0.0.3 baiyp/learn-docker-storage:0.0.3

file

這樣就將我們的鏡像改名了,這個就符合我們的dockerhub的規範了

推送鏡像
推送鏡像

現在我們要將我們的鏡像推送到docker hub

推送鏡像的規範是docker push 註冊用戶名/鏡像名:tag,因為我們上面已經把鏡像名字改正確了,所以可以直接推送。

docker push baiyp/learn-docker-storage:0.0.3

file

這樣我們就將我們的數據推送到docker hub,我們發現只有最頂層的鏡像推送了,openjdk的鏡像並沒有推送,直接復用了倉庫的,這就是分層的好處

檢查鏡像

我們可以到docker hub檢查我們的鏡像

file

可以看到我們的鏡像已經推送過來了,點開詳情可以看到我們鏡像的內容以及tag號

file

倉庫鏡像測試
刪除本地鏡像

可以通過docker rmi 鏡像ID刪除本地鏡像

docker rmi baiyp/learn-docker-storage:0.0.3 learn-docker-storage:0.0.3

file

再次查看本地鏡像,已經沒有了我們的微服務的鏡像

docker images

file

從倉庫拉取鏡像

這個時候可以從docker hub拉取鏡像

docker pull baiyp/learn-docker-storage:0.0.3

file

這個時候已經將鏡像拉取下來了,我們可以運行鏡像了

運行鏡像

執行下麵的命令進行創建鏡像

docker run -d \
-v /tmp/data/logs:/logs \
-p 8003:8003 \
--name learn-docker-storage \
--network=learn-docker-network \
baiyp/learn-docker-storage:0.0.3

file

訪問測試

我們訪問下,檢查下是否可以正常運行

 curl http://192.168.64.153:8003/storage/employe/findByID/10001 | python -m json.tool

file

到這裡我們就完成dockerhub倉庫的發佈與拉取

直接運行測試

在真實環境中,我們一般不會拉取在運行,一般都是直接運行,如果docker檢查鏡像不存在會自動拉取

停止服務並刪除鏡像

 docker rm -f learn-docker-storage
 docker rmi baiyp/learn-docker-storage:0.0.3

file

我們直接運行容器

docker run -d \
-v /tmp/data/logs:/logs \
-p 8003:8003 \
--name learn-docker-storage \
--network=learn-docker-network \
baiyp/learn-docker-storage:0.0.3

file

這一個run命令就解決了容器的拉取以及容器運行的問題

registry倉庫管理

registry簡介

​ 官方提供了Docker Hub網站來作為一個公開的集中倉庫。然而,本地訪問Docker Hub速度往往很慢,並且很多時候我們需要一個本地的私有倉庫只供網內使用。

​ Docker倉庫實際上提供兩方面的功能,一個是鏡像管理,一個是認證。前者主要由docker-registry項目來實現,通過http服務來上傳下載;後者可以通過docker-index(閉源)項目或者利用現成認證方案(如nginx)實現http請求管理。

​ docker registry 就是管理 docker 鏡像的服務, Docker 公司維護的 registry 就是 http://hub.docker.com ,它可以讓我們方便的下載預先做好的鏡像。

安裝registry

我們可以通過獲取官方的 registry 鏡像來運行。

​ 這將使用官方提供的 registry 鏡像來啟動私有倉庫,預設情況下,倉庫會被創建在容器的 /var/lib/registry 目錄下。我們可以通過 -v 參數將鏡像文件存放在本地的指定路徑。

docker run -d \
-p 5000:5000 \
-v /tmp/data/registry:/var/lib/registry \
--restart=always \
registry

file

這樣我們的registry已經啟動起來了

訪問測試

這時我們可以通過瀏覽器訪問 http://ip:5000/v2/_catalog 查看倉庫是否啟動成功。

curl http://192.168.64.152:5000/v2/_catalog

file

上傳鏡像

registry 上傳鏡像的命名規範是 倉庫IP:5000/鏡像名稱:tag

修改鏡像名稱

將我們的鏡像改成服務規範的名字

docker tag baiyp/learn-docker-storage:0.0.3 192.168.64.153:5000/learn-docker-storage:0.0.3

file

推送鏡像

使用命令推送鏡像

docker push 192.168.64.153:5000/learn-docker-storage:0.0.3

我們發現推送報錯了,這是因為docker推送預設使用的https的方式,而我們的registry只支持http的方式

file

修改Docker推送配置

對於 Linux 系統,我們可以在 /etc/docker/daemon.jsondaemon.josn 文件不存在則新建該文件)

 vi /etc/docker/daemon.json

添加下麵的配置

{ "insecure-registries": ["倉庫IP:5000"] }

完整的配置如下

{
  "insecure-registries": ["192.168.64.153:5000"],
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

執行以下命令重啟重新載入配置並生效

systemctl daemon-reload
service docker restart

file

再次進行推送

執行命令再次推送

docker push 192.168.64.153:5000/learn-docker-storage:0.0.3

file

我們發現這次推送成功了

再次訪問registry

訪問測試檢查是否已經推送

curl http://192.168.64.153:5000/v2/_catalog | python -m json.tool

file

我們發現我們的鏡像已經推送到了registry,我們通過以下URL訪問下tag列表

curl http://192.168.64.153:5000/v2/learn-docker-storage/tags/list | python -m json.tool

file

registry鏡像測試
刪除本地鏡像

可以通過docker rmi 鏡像ID刪除本地鏡像

docker rmi baiyp/learn-docker-storage:0.0.3 192.168.64.153:5000/learn-docker-storage:0.0.3

file

運行registry中的鏡像
docker run -d \
-v /tmp/data/logs:/logs \
-p 8003:8003 \
--name learn-docker-storage \
--network=learn-docker-network \
192.168.64.153:5000/learn-docker-storage:0.0.3

file

我們發現自己的registry很快就拉取並且運行起來了

訪問微服務測試
 curl http://192.168.64.153:8003/storage/employe/findByID/10001 | python -m json.tool

file

使用Harbor管理倉庫

什麼是Harbor

harbor是一個由vm公司開源的企業級容器鏡像倉庫,有以下功能

  • 管理用戶界面
  • 基於角色的訪問控制
  • LDAP/AD 集成及日誌審計等基本運維操作

​ harbor是構建企業級私有docker鏡像的倉庫的開源解決方案,它是 Docker Registry的更高級封裝,它除了提供友好的Web UI界面,角色和用戶許可權管理,用戶操作審計等功能外,它還整合了K8s的插件(Add-ons)倉 庫,即Helm通過chart方式下載,管理,安裝K8s插件,而chartmuseum 可以提供存儲chart數據的倉庫。

​ 另外它還整合了兩個開源的安全組件,一個是Notary,另一個是Clair,Notary類似 於私有CA中心,而Clair則是容器安全掃描工具,它通過各大廠商提供的 CVE漏洞庫來獲取最新漏洞信息,並掃描用戶上傳的容器是否存在已知的 漏洞信息,這兩個安全功能對於企業級私有倉庫來說是非常具有意義的。

Harbor的三種安裝方式

這裡我們使用離線安裝

  • 線上安裝:從Docker Hub下載Harbor相關鏡像,因此安裝軟體包非常小
  • 離線安裝:安裝包包含部署的相關鏡像,因此安裝包比較大
  • OVA安裝程式(第三方):當用戶具有vCenter環境時,使用此安裝程式,在部署 OVA後啟動Harbor
為什麼使用私用倉庫

公司的項目一般不予許我們上傳到 Docker Hub 這類的公共倉庫中,所有學會創建一個私有倉庫也是非常必要的

​ 雖然hub.docker.com上可以保存鏡像,但是網速相對較慢,在內部環境中搭建一個私有的公共倉庫是個更好的方案。

harbor 的基本組件
組件 功能
harbor-adminserver 配置管理中心
harbor-db 資料庫
harbor-jobservice 鏡像複製
harbor-log 日誌操作
harbor-ui Web管理頁面和API
nginx 前端代理,負責前端頁面和鏡像上傳/下載轉發
redis 會話
registry 鏡像存儲
前置工作
下載安裝包

Harbor官方地址:https://github.com/goharbor/harbor/releases 下載最新版安裝包

file

準備環境

需要安裝docker以及docker-compose的環境上面我們已提前安裝了

  • 安裝Docker環境
  • 安裝docker-compose環境
離線安裝
解壓安裝包

解壓harbor的安裝包

tar -zxf harbor-offline-installer-v2.1.4.tgz

進入目錄 然後將harbor.yml.tmp複製一份並該命為harbor.yml

cd harbor
cp harbor.yml.tmpl harbor.yml

file

註意: 這裡跟老版本不一樣,沒有了harbor.cfg文件,我們需要手動複製harbor.yml.tmpl在做修改即可

修改harbor.yml

harbor作為私有倉庫作用在公司內網,一般都是信任關係,沒多大必要做https,使用http即可!
所以 把https相關的已經註釋掉

file

並註意配置文件的用戶名密碼配置,預設是 用戶名是:admin,密碼是:Harbor12345,如果修改需要安裝前修改

image-20210324144045203

載入本地鏡像

使用docker load命令載入本地鏡像,不用再從dockerhub下載了

docker load -i harbor.v2.1.4.tar.gz

file

這樣容器鏡像就被載入到了本地,我們可以通過docker images命令查看導入的鏡像

docker images

file

執行安裝命令

先執行預處理命令,會創建一些文件夾,初始化一些文件

./prepare

file

然後開始真正的安裝過程

./install.sh

file

如果出現-Harbor has been installed and started successfully表示安裝成功,並查看docker進程

docker ps

file

可以看到很多服務已經起來了。

啟動和停止harbor

在harbor的安裝目錄執行以下命令就可以啟動和停止了

# 啟動
docker-compose up -d 
# 停止
docker-compose stop 
# 重新啟動
docker-compose restart 
harbor使用
訪問harbor

輸入 http://harborIP就可以直接訪問了,這裡訪問我們的地址http://192.168.64.153/

file

輸入用戶名密碼就可以登錄了 ,如果沒有修改配置文件 預設是 用戶名是:admin,密碼是:Harbor12345

file

登錄後就可以進行操作了

Docker登錄harbor

使用docker login命令就可以登錄harbor了

docker login -u admin -p Harbor12345 192.168.64.153

file

我們發現登錄報錯了,這和registry一樣,docker模式使用https方式,而我們使用的是http的方式登錄

修改Docker配置

對於 Linux 系統,我們可以在 /etc/docker/daemon.jsondaemon.josn 文件不存在則新建該文件)

 vi /etc/docker/daemon.json

添加下麵的配置

{ "insecure-registries": ["harbor地址"] }

完整的配置如下

{
   #因為預設埠號是80 所以不需要加埠號
  "insecure-registries": ["192.168.64.153"],
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

執行以下命令重啟重新載入配置並生效

systemctl daemon-reload
service docker restart

file

再次進行登錄
docker login -u admin -p Harbor12345 192.168.64.153

這次我們就成功登錄了

file

到這裡我們就已經登錄成功了

修改鏡像tag

我們推送鏡像我要把我們的鏡像名稱改成符合規範的格式

docker tag \
192.168.64.153:5000/learn-docker-storage:0.0.3 \
192.168.64.153/library/learn-docker-storage:0.0.3

file

這裡有一個library路徑,是harbor預設的項目名稱

file

推送鏡像

可以通過docker push進行推送鏡像,註意需要先登錄在進行推送

docker push 192.168.64.153/library/learn-docker-storage:0.0.3

file

到這裡我們已經推送到了harbor,我們可以登錄library頁面查看

file

harbor 測試
刪除本地鏡像

可以通過docker rmi 鏡像ID刪除本地鏡像

docker rmi \
192.168.64.153:5000/learn-docker-storage:0.0.3 \
192.168.64.153/library/learn-docker-storage:0.0.3

file

運行harbor 中的鏡像

執行運行命令

docker run -d \
-v /tmp/data/logs:/logs \
-p 8003:8003 \
--name learn-docker-storage \
--network=learn-docker-network \
192.168.64.153/library/learn-docker-storage:0.0.3

file

訪問微服務測試
 curl http://192.168.64.153:8003/storage/employe/findByID/10001 | python -m json.tool

file

查看harbor詳情

詳情裡面會顯示拉取次數

file

HarBor用戶許可權說明

HarBor用戶角色在項目(項目-成員-新加成員)中為3類:項目管理員、開發人員、訪客

  • 項目管理員:增刪改查
  • 開發人員:上傳和下載
  • 訪客:只允許下載
HarBor許可權配置
新建用戶

點擊創建用戶可以創建一個用戶

file

我們創建一個itcast的用戶

file

用戶授權

創建用戶後進入項目模塊添加成員

file

選擇成員後並選擇許可權

file

訪客只能進行拉取不能推送和管理

file

用戶登錄測試

我們用itcast用戶通過web端登錄測試下,我們發現用戶是沒有修改許可權的

file

docker登錄測試

登錄docker客戶端

 docker login -u itcast -p Qwert123 192.168.64.153

file

嘗試推送鏡像

docker push 192.168.64.153/library/learn-docker-storage:0.0.3

file

我們發現是無法進行推送鏡像的

拉取鏡像測試

先刪除本地的容器以及鏡像

 docker rm -f learn-docker-storage
 docker rmi 192.168.64.153/library/learn-docker-storage:0.0.3

file

嘗試拉取並啟動本地鏡像

docker run -d \
-v /tmp/data/logs:/logs \
-p 8003:8003 \
--name learn-docker-storage \
--network=learn-docker-network \
192.168.64.153/library/learn-docker-storage:0.0.3

file

微服務訪問測試

 curl http://192.168.64.153:8003/storage/employe/findByID/10001 | python -m json.tool

file

Harbor支持Https(擴展)

為了支持微服務推送我們需要將HarBor設置為https,可以讓HarBor在任何地方使用以及推送

生成SSL證書

前面說了怎麼搭建harbor倉庫,這裡講一講harbor實現https訪問,因為只需要內網訪問,沒必要去申請一個ssl證書,所以我就用openssl頒發自簽名證書,實現https訪問。

創建證書目錄
mkdir -p /tmp/data/cert && cd /tmp/data/cert && ll

file

創建 CA 根證書
openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=beijing/O=itcast/CN=harbor-registry"

這裡subj是主題的意思含義如下

C=國家,S=省(市),L=區(縣、市),O=組織機構,OU=組織單位,CN=通用名稱
生成證書簽名

生成一個證書簽名, 設置訪問功能變數名稱為itcastharbor.com

openssl req -newkey rsa:4096 -nodes -sha256 -keyout itcastharbor.com.key -out server.csr -subj "/C=CN/L=beijing/O=itcast/CN=itcastharbor.com"
生成主機證書
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out itcastharbor.com.crt
操作步驟如下

file

配置harbor.yml

然後進入harbor安裝目錄修改harbor.yml,修改下麵幾個選項

  • hostname,使用IP或功能變數名稱,不要用迴環地址,localhost等
  • certificate,yourdomain.com.crt的路徑/tmp/data/cert/itcastharbor.com.crt
  • private_key,yourdomainr.com.key的路徑/tmp/data/cert/itcastharbor.com.key

file

重新安裝harbor服務
停止harbor

停止運行中的服務

 docker-compose down

運行目錄harbor下的prepare完成https的配置

./prepare

file

重新安裝

在harbor目錄下運行安裝命令

./install.sh

file

修改Docker推送配置

我們需要將推送的IP改成功能變數名稱

vi /etc/docker/daemon.json

上文中我們對registry已經操作了,這裡需要改用harbor,需要重新配置

#因為預設埠號是80 所以不需要加埠號
{ "insecure-registries": ["倉庫IP或功能變數名稱"] }

完整的配置如下

{
  "insecure-registries": ["itcastharbor.com"],
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

執行以下命令重啟重新載入配置並生效

systemctl daemon-reload
service docker restart
修改本地host文件

為了讓本機能夠正常訪問到harbor的web環境需要配置本地的hosts文件增加如下配置

192.168.64.153 itcastharbor.com

windows環境下host路徑在C:\Windows\System32\drivers\etc

功能變數名稱訪問harbor

通過功能變數名稱訪問harbor,功能變數名稱就是我們剛纔配置的itcastharbor.com功能變數名稱訪

file

因為我們的證書是自簽的,不是第三方認證的,素以有安全性提示,點擊繼續就可以訪問

file

到這裡登錄後就可以訪問了

file

本文由傳智教育博學谷教研團隊發佈。

如果本文對您有幫助,歡迎關註點贊;如果您有任何建議也可留言評論私信,您的支持是我堅持創作的動力。

轉載請註明出處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 序言 哈嘍兄弟們,今天咱們來瞭解一下 fileinput 。 說到fileinput,可能90%的碼農表示沒用過,甚至沒有聽說過。 這不奇怪,因為在python界,既然open可以走天下,何必要fileinput呢? 但是,今天我還是要介紹fileinput這個方法,因為太奈斯了。 不止是香。是真香 ...
  • 函數是組織代碼的非常有效的方式,有了函數,我們就可以編寫大規模的項目。可以說,函數是組織代碼的最小單元。 Python函數的定義 函數是代碼封裝的一種手段,函數中包含一段可以重覆執行的代碼,在需要用到這些代碼時,只需要調用函數,就會運行函數中的代碼。 python 函數這麼定義: def 函數名稱( ...
  • 創作不易,感謝支持! fopen函數 頭文件:stdio.h 功能是打開一個文件,其聲明格式是: FILE *fopen(const char *filename, const char *mode); 文件指針名 = fopen(文件名,使用文件方式) “文件名”是被打開文件的文件名,類型是C風格 ...
  • GUI:Graphical User Interface(圖形用戶介面) 用圖形的方式,用來顯示電腦操作的界面 Java為GUI提供的API都存在java.awt和javax.Swing兩個包中 java.awt 包: awt是這三個單詞首字母的縮寫,翻譯過來是抽象視窗工具包,只不過這個包的API ...
  • (這裡寫自定義目錄標題)Java開發入門 博客內容是本人自學java過程,所以具體工具的下載步驟會省略。其中的部分下載和安裝步驟,引用了其他博主的相關文章。 Java語言 Java是目前世界上最流行的電腦編程語言,是一種可以編寫跨平臺應用軟體的面向對象的程式設計語言,也是當今使用率最高的編程語言。 ...
  • 前兩天從網上採集到一條短視頻數據(刷短視頻),發現六公主連排5部劉亦菲主演的電影!甚是震驚,太有牌面了,看了一下日子是8月25號,嗷,原來當天是劉亦菲的生日。巧了,正好也是我家柴犬旺財的3歲生日😀。 言歸正傳,我們看到這條數據的 標題:#劉亦菲35歲生日獲央視獨寵# 神仙姐姐生日快樂! 為了分析數 ...
  • 首先,進行springboot2.7之後,官方不推薦使用/META-INF/spring.factories,轉成和SPI比較類似的/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件, ...
  • 近日,項目中有一個耗時較長的Job存在CPU占用過高的問題,經排查發現,主要時間消耗在往MyBatis中批量插入數據。mapper configuration是用foreach迴圈做的,差不多是這樣。(由於項目保密,以下代碼均為自己手寫的demo代碼) <insert id="batchInsert ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...