Docker簡介與安裝

来源:https://www.cnblogs.com/zhanglianghhh/archive/2020/06/10/13089128.html
-Advertisement-
Play Games

Docker簡介;Docker與虛擬機區別;Docker的優點及內部組件說明;如何安裝Docker與鏡像加速配置。 ...


 

Docker簡介;Docker與虛擬機區別;Docker的優點及內部組件說明;如何安裝Docker與鏡像加速配置。

什麼是Docker

Docker提供了一個可以運行你的應用程式的封裝,或者說容器。它原本是dotCloud的一個內部項目,開源的時候吸引了大量的關註與討論,後續導致dotCloud把公司名稱改為了Docker Inc。Docker 最初是在 Ubuntu 12.04 上開發實現的;Red Hat 則從 RHEL 6.5 開始對 Docker 進行支持;Google 也在其 PaaS 產品中廣泛應用 Docker。

Docker 使用 Google 公司推出的 Go 語言進行開發實現並遵從Apache2.0協議開源,基於 Linux 內核的 cgroup,namespace,以及 OverlayFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於操作系統層面的虛擬化技術。由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其為容器。最初實現是基於 LXC,從 0.7 版本以後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,則進一步演進為使用 runC 和 containerd。

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網路互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更為輕便、快捷。

Docker將應用程式與該程式的依賴,打包在一個文件裡面。運行這個文件,就會生成一個虛擬容器。程式在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了Docker,就不用擔心環境問題,這大大地提高了程式運行的靈活性和可移植性。

Docker屬於Linux容器的一種封裝,提供簡單易用的容器使用介面。總體來說,Docker的介面相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的代碼一樣。

Docker與虛擬機區別

下麵的圖片比較了 Docker 和傳統虛擬化方式的不同之處。傳統虛擬機技術是虛擬出一套硬體後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機更為輕便。

上圖:傳統虛擬化

 

上圖:Docker

 

類別 Docker OpenStack/KVM
部署難度 非常簡單 組件多,部署複雜,耗時
啟動速度 秒級 分鐘級
執行性能 和物理機幾乎一致 VM會占用一些資源
鏡像體積 鏡像MB級別 鏡像GB級別
管理效率 管理簡單 組件相互依賴,管理複雜
隔離性 隔離性高 徹底隔離
可管理性 單進程、不建議啟動SSH 完成的系統管理
網路連接 比較弱 可以靈活組建各類網路架構

 

為什麼要使用 Docker

更高效的利用系統資源

由於容器不需要進行硬體虛擬以及運行完整操作系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數量的應用。

更快速的啟動時間

傳統的虛擬機技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接運行於宿主內核,無需啟動完整的操作系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

一致的運行環境

開發過程中一個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一致,導致有些 bug 並未在開發過程中被髮現。而 Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現 「這段代碼在我機器上沒問題啊」 這類問題。

持續交付和部署

對開發和運維(DevOps)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。

使用 Docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過 Dockerfile 來進行鏡像構建,並結合 持續集成(Continuous Integration) 系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合 持續部署(Continuous Delivery/Deployment) 系統進行自動部署。

而且使用 Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

更輕鬆的遷移

由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有雲、私有雲,甚至是筆記本,其運行結果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況。

更輕鬆的維護和擴展

Docker 使用的分層存儲以及鏡像的技術,使得應用重覆部分的復用更為容易,也使得應用的維護更新更加簡單,基於基礎鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質量的 官方鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的鏡像製作成本。

Docker內部組件

Docker 包括三個基本概念:鏡像(Image)、容器(Container)、倉庫(Repository)

理解了這三個概念,就理解了 Docker 的整個生命周期。

Docker 鏡像

我們都知道,操作系統分為內核和用戶空間。對於 Linux 而言內核啟動後,會掛載 root 文件系統為其提供用戶空間支持。而 Docker 鏡像(Image)就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系統的 root 文件系統。

Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程式、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名捲、環境變數、用戶等)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

分層存儲

因為鏡像包含操作系統完整的 root 文件系統,其體積往往是龐大的,因此在 Docker 設計時,就充分利用 Union FS 的技術,將其設計為分層存儲的架構。所以嚴格來說,鏡像並非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現並非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。

鏡像構建時,會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。因此,在構建鏡像的時候,需要額外小心,每一層儘量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。

分層存儲的特征還使得鏡像的復用、定製變的更為容易。甚至可以用之前構建好的鏡像作為基礎層,然後進一步添加新的層,以定製自己所需的內容,構建新的鏡像。

Docker 容器

鏡像(Image)和容器(Container)的關係,就像是面向對象程式設計中的 類 和 實例 一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的命名空間。因此容器可以擁有自己的 root 文件系統、自己的網路配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境里,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。也因為這種隔離的特性,很多人初學 Docker 時常常會混淆容器和虛擬機。

前面講過鏡像使用的是分層存儲,容器也是如此。每一個容器運行時,是以鏡像為基礎層,在其上創建一個當前容器的存儲層,我們可以稱這個為容器運行時讀寫而準備的存儲層為容器存儲層

容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存於容器存儲層的信息都會隨容器刪除而丟失。

按照 Docker 最佳實踐的要求,容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。所有的文件寫入操作,都應該使用數據捲(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網路存儲)發生讀寫,其性能和穩定性更高。

數據捲的生存周期獨立於容器,容器消亡,數據捲不會消亡。因此,使用數據捲後,容器刪除或者重新運行之後,數據卻不會丟失。

Docker Registry

鏡像構建完成後,可以很容易的在當前宿主機上運行,但是,如果需要在其它伺服器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。

一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag)每個標簽對應一個鏡像。

通常,一個倉庫會包含同一個軟體不同版本的鏡像,而標簽就常用於對應該軟體的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟體哪個版本的鏡像。如果不給出標簽,將以 latest 作為預設標簽。

倉庫名經常以 兩段式路徑 形式出現,比如 jwilder/nginx-proxy,前者往往意味著 Docker Registry 多用戶環境下的用戶名,後者則往往是對應的軟體名。但這並非絕對,取決於所使用的具體 Docker Registry 的軟體或服務。

Docker Registry 公開服務

Docker Registry 公開服務是開放給用戶使用、允許用戶管理鏡像的 Registry 服務。一般這類公開服務允許用戶免費上傳、下載公開的鏡像,並可能提供收費服務供用戶管理私有鏡像。

最常使用的 Registry 公開服務是官方的 Docker Hub,這也是預設的 Registry,並擁有大量的高質量的官方鏡像。除此以外,還有 CoreOS 的 Quay.io,CoreOS 相關的鏡像存儲在這裡;Google 的 Google Container Registry,Kubernetes 的鏡像使用的就是這個服務。

由於某些原因,在國內訪問這些服務可能會比較慢。國內的一些雲服務商提供了針對 Docker Hub 的鏡像服務(Registry Mirror),這些鏡像服務被稱為加速器。常見的有 阿裡雲加速器、DaoCloud 加速器 等。使用加速器會直接從國內的地址下載 Docker Hub 的鏡像,比直接從 Docker Hub 下載速度會提高很多。在 安裝 Docker 一節中有詳細的配置方法。

國內也有一些雲服務商提供類似於 Docker Hub 的公開服務。比如 網易雲鏡像服務、DaoCloud 鏡像市場、阿裡雲鏡像庫 等。

1 Docker Hub:https://hub.docker.com/ 
2 Quay.io:https://quay.io/repository/ 
3 Google Container Registry:https://cloud.google.com/container-registry/
4 阿裡雲加速器:https://cr.console.aliyun.com/#/accelerator
5 DaoCloud 加速器:https://www.daocloud.io/mirror#accelerator-doc

 

Docker Registry 私有服務

除了使用公開服務外,用戶還可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 鏡像,可以直接使用做為私有 Registry 服務。

開源的 Docker Registry 鏡像只提供了 Docker Registry API 的服務端實現,足以支持 docker 命令,不影響使用。但不包含圖形界面,以及鏡像維護、用戶管理、訪問控制等高級功能。在官方的商業化版本 Docker Trusted Registry 中,提供了這些高級功能。

除了官方的 Docker Registry 外,還有第三方軟體實現了 Docker Registry API,甚至提供了用戶界面以及一些高級功能。比如,Harbor 和 Sonatype Nexus。

安裝docker

備註:切勿在沒有配置 Docker YUM 源的情況下直接使用 yum 命令安裝 Docker.,因為這種方式安裝的docker 版本較低。

系統要求:最好是CentOS 7版本及以上版本。

卸載舊版本

使用以下命令卸載舊版本:

 1 yum remove docker \
 2   docker-client \
 3   docker-client-latest \
 4   docker-common \
 5   docker-latest \
 6   docker-latest-logrotate \
 7   docker-logrotate \
 8   docker-selinux \
 9   docker-engine-selinux \
10   docker-engine

 

docker安裝指定版本

 1 # 安裝依賴包
 2 [root@docker01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
 3 # 添加軟體yum源信息
 4 [root@docker01 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 5 # 更新 yum 軟體源緩存【可選操作】
 6 [root@docker01 ~]# yum makecache fast
 7 # 查看可安裝的版本信息
 8 [root@docker01 ~]# yum list docker-ce.x86_64 --showduplicates | sort -r 
 9  * updates: mirrors.aliyun.com
10 Loading mirror speeds from cached hostfile
11 Loaded plugins: fastestmirror
12  * extras: mirrors.aliyun.com
13 docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
14 docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
15 docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
16 docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
17 docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
18 docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
19 docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
20 docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
21 docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
22 docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
23 docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
24 docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
25 docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
26 docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
27 docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
28 docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
29 docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
30 docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
31 docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
32 docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
33  * base: mirrors.aliyun.com
34 Available Packages
35 # 安裝指定版本的docker服務
36 [root@docker01 ~]# yum -y install docker-ce-18.06.3.ce-3.el7
37 # 版本信息查看
38 [root@docker01 ~]# docker -v  # 或者 docker version
39 Docker version 18.06.3-ce, build d7080c1

 

啟動服務與加入開機自啟動

 1 [root@docker01 ~]# systemctl status docker.service   # 查看當前服務狀態
 2 ● docker.service - Docker Application Container Engine
 3    Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)  # 未加入開機自啟動
 4    Active: inactive (dead)  # 服務未啟動
 5      Docs: https://docs.docker.com
 6 [root@docker01 ~]# 
 7 [root@docker01 ~]# systemctl enable docker.service   # 加入開機自啟動
 8 Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
 9 [root@docker01 ~]# 
10 [root@docker01 ~]# systemctl start docker.service    # 啟動服務
11 [root@docker01 ~]# 
12 [root@docker01 ~]# systemctl status docker.service   # 查看當前服務狀態
13 ● docker.service - Docker Application Container Engine
14    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)  # 已加入開機自啟動
15    Active: active (running) since Sun 2020-04-12 23:27:00 CST; 2s ago  # 服務已啟動
16      Docs: https://docs.docker.com
17  Main PID: 2502 (dockerd)
18     Tasks: 21
19    Memory: 46.3M
20    CGroup: /system.slice/docker.service
21            ├─2502 /usr/bin/dockerd
22            └─2509 docker-containerd --config /var/run/docker/containerd/containerd.toml

 

鏡像加速器

國內從 Docker Hub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。國內很多雲服務商都提供了國內加速器服務,例如:

1 網易雲加速器 https://hub-mirror.c.163.com
2 阿裡雲加速器(需登錄賬號獲取): https://cr.console.aliyun.com/cn-hangzhou/mirrors

 

國內各大雲服務商均提供了 Docker 鏡像加速服務,建議根據運行 Docker 的雲平臺選擇對應的鏡像加速服務,具體請參考官方文檔。

在CentOS7系統,請在 /etc/docker/daemon.json 中寫入如下內容(如果文件不存在請新建該文件)

1 [root@docker01 ~]# vim /etc/docker/daemon.json
2 {
3   "registry-mirrors": [
4     "https://hub-mirror.c.163.com"
5   ]
6 }

註意,一定要保證該文件符合 json 規範,否則 Docker 將不能啟動。

之後重新啟動服務。

1 systemctl daemon-reload
2 systemctl restart docker

 

檢查加速器是否生效

執行如下命令,如果從結果中看到瞭如下內容,說明配置成功。

1 [root@docker01 ~]# docker info  # 顯示整個系統的信息
2 ………………
3 Registry Mirrors:
4  https://hub-mirror.c.163.com/
5 Live Restore Enabled: false
6 
7 WARNING: bridge-nf-call-iptables is disabled
8 WARNING: bridge-nf-call-ip6tables is disabled

 

docker服務啟動異常處理

 1 [root@docker01 tools]# systemctl start docker
 2 Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
 3 [root@docker01 tools]# journalctl -xe  # 查詢具體信息
 4 -- Defined-By: systemd
 5 -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
 6 -- 
 7 -- Unit docker.service has begun starting up.
 8 Nov 01 17:40:55 docker01 dockerd[2493]: time="2018-11-01T17:40:55.181209947+08:00" level=info msg="libcontainerd: new containerd process, pid: 2501"
 9 Nov 01 17:40:56 docker01 dockerd[2493]: time="2018-11-01T17:40:56.187023899+08:00" level=error msg="[graphdriver] prior storage driver overlay2 failed: driver not supported"
10 Nov 01 17:40:56 docker01 dockerd[2493]: Error starting daemon: error initializing graphdriver: driver not supported
11 Nov 01 17:40:56 docker01 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
12 Nov 01 17:40:56 docker01 systemd[1]: Failed to start Docker Application Container Engine.
13 -- Subject: Unit docker.service has failed
14 -- Defined-By: systemd
15 -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
16 ………………
17 # 具體信息如下截圖,解決方法如下,之後就可以正常起docker服務了
18 [root@docker01 tools]# mv /var/lib/docker /var/lib/docker.old

 

 

推薦閱讀

1 Docker官網:https://www.docker.com/
2 Docker中文社區:http://www.docker.org.cn/
3 Docker HUB官方鏡像倉庫:https://hub.docker.com/
4 Docker從入門到實踐:https://yeasy.gitbooks.io/docker_practice/content/

 


 

 

———END———
如果覺得不錯就關註下唄 (-^O^-) !

 


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

-Advertisement-
Play Games
更多相關文章
  • vs版本 2019,鏈接資料庫使用Navicat,資料庫MySql abp的官網:https://aspnetboilerplate.com/,我們去Download這裡下載一個模板,需要選好Target Version、輸入項目名字,我這裡使用abp的mvc版本、項目名為AbpLearn下載一份 ...
  • LiveCharts 提示框(DataTooltip)百分比一直為0.00%解決辦法 問題描述:在使用LiveCharts 開源圖標庫的時候,使用CartesianChart類圖表,當Series為LineSeries(多個對象)類型時,DataTooltip數據提示框會提示每個點對應的百分比,但一 ...
  • 後臺修改前臺不刷新可能的原因: 1.前臺頁面沒有寫Binding 2.後臺數據定義的欄位沒有get和set 3.數據容器沒有使用ObservableCollection 4.欄位內容修改時沒有重置數據源 首先簡單舉例界面代碼如下: <DataGrid Name="DG" ItemsSource="{ ...
  • 隨著微服務的火熱,DDD(領域驅動設計模式)思想風起雲涌,衝擊著整個軟體生態系統。其中,事件匯流排那是必須知道的了,於是我便抱著一個學習DDD的心態搭建了一個博客網站,目前該網站正在建設階段,後續會不斷完善,這裡我只是講一下我裡面所用到的事件匯流排。 事件匯流排,我的理解就是發佈訂閱模式,這裡有一篇文章寫 ...
  • 使用請求頭認證來測試需要授權的 API 介面 Intro 有一些需要認證授權的介面在寫測試用例的時候一般會先獲取一個 token,然後再去調用介面,其實這樣做的話很不靈活,一方面是存在著一定的安全性問題,獲取 token 可能會有一些用戶名密碼之類的測試數據,還有就是獲取 token 的話如果全局使 ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • 《C# 敏捷開發實踐》 [作者] (英) Gary McLean Hall[譯者] (中) 許順強[出版] 人民郵電出版社[版次] 2016年07月 第1版[印次] 2016年07月 第1次 印刷[定價] 69.00元 【第一部分】 (P001) 編寫代碼是軟體開發的核心工作,而編寫好用的代碼有很多 ...
  • API是什麼,Linux系統中系統調用可以理解是操作系統為用戶提供的一系列操作的介面(API), 以C語言為例,我們使用fopen()函數可以打開一個文件,感覺非常簡單。文件保存在硬碟上,要經過複雜的處理才能顯示,這些細節對我們來說是透明的,由操作系統完成。也就是說,我們調用fopen()函數來通知 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...