從安裝到上手:Ubuntu 22.04 玩轉 Containerd 2.1.3 容器運行時

Containerd 是一款支持 OCI 規范的容器運行時,注重容器部署和生命周期管理的簡單性、健壯性與可移植性,常被嵌入到 Docker 和 Kubernetes 等系統中。本文將詳細介紹在 Ubuntu 22.04 服務器上通過二進制包手動安裝 Containerd 的完整步驟,包括相關組件的安裝與配置。

一、安裝 Containerd 組件

首先,你需要學習如何通過二進制包手動安裝Containerd容器運行時。在此過程中,你還得為Containerd安裝一些必要組件,像runc和CNI(容器網絡接口)插件都包含在內。

Containerd及其所有組件均可在其GitHub倉庫中找到,隨時可供安裝。

安裝Containerd的步驟如下:先訪問Containerd的GitHub發布頁面,獲取最新版本的相關信息;接著復制該版本的下載鏈接,用wget工具將Containerd的二進制包下載下來;最后把下載的文件解壓到/usr/local目錄。

1. 安裝containerd核心

Containerd 及其組件可在其 GitHub 存儲庫中獲取。首先需要查看?Containerd GitHub 發布頁面?以獲取最新版本,然后通過以下命令下載并解壓:

在本文撰寫時,Containerd的最新版本為v2.1.3。你可以在Ubuntu服務器上使用wget命令下載該版本,再通過tar命令將其解壓到/usr/local目錄。

# 本文以 v2.1.3 版本為例
root@k8s-master:~# wget https://github.com/containerd/containerd/releases/download/v2.1.3/containerd-2.1.3-linux-amd64.tar.gz
root@k8s-master:~# tar Cxzvf /usr/local containerd-2.1.3-linux-amd64.tar.gz 
bin/
bin/containerd
bin/containerd-shim-runc-v2
bin/ctr
bin/containerd-stress

?2. 安裝 runc

runc 是一款根據 OCI 規范生成容器的命令行工具,從?runc GitHub 發布頁面?獲取最新版本安裝:

# 本文以 v1.3.0 版本為例
root@k8s-master:~# wget https://github.com/opencontainers/runc/releases/download/v1.3.0/runc.amd64
root@k8s-master:~# install -m 755 runc.amd64 /usr/local/sbin/runc
root@k8s-master:~# which runc
/usr/local/sbin/runc

安裝完成后,可通過?which runc?命令驗證,若輸出?/usr/local/sbin/runc?則表示安裝成功。

3. 安裝 CNI 插件

CNI(容器網絡接口)插件為容器提供網絡功能,需從?CNI 插件 GitHub 發布頁面?獲取最新版本:

# 本文以 v1.3.0 版本為例
root@k8s-master:~# wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
# 創建安裝目錄并解壓
root@k8s-master:~# mkdir -p /opt/cni/bin
root@k8s-master:~# tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.3.0.tgz 
./
./loopback
./bandwidth
./ptp
./vlan
./host-device
./tuning
./vrf
./sbr
./tap
./dhcp
./static
./firewall
./macvlan
./dummy
./bridge
./ipvlan
./portmap
./host-local

?二、配置 Containerd

安裝完所有組件后,需進行如下配置以確保 Containerd 正常運行:

1.?生成默認配置文件

root@k8s-master:~# mkdir -p /etc/containerd/
root@k8s-master:~# containerd config default | sudo tee /etc/containerd/config.toml
version = 3
root = '/var/lib/containerd'
state = '/run/containerd'
temp = ''
disabled_plugins = []
required_plugins = []
oom_score = 0
imports = []
......

2. 啟用 SystemdCgroup

該操作會將配置文件中的?SystemdCgroup = false?改為?SystemdCgroup = true,以支持 systemd 控制組:

root@k8s-master:~# sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

驗證是否啟動只需要grep配置即可

root@k8s-master:~# cat /etc/containerd/config.toml | grep -i systemdcgroupSystemdCgroup = trueroot@k8s-master:~# journalctl -u containerd | grep -i "systemdcgroup"
Jul 19 10:45:13 k8s-master containerd[16895]: time="2025-07-19T10:45:13.086716772+08:00" level=info msg="starting cri plugin" config="{\"containerd\":{\"defaultRuntimeName\":\"runc\",\"runtimes\":{\"runc\":{\"runtimeType\":\"io.containerd.runc.v2\",\"runtimePath\":\"\",\"PodAnnotations\":[],\"ContainerAnnotations\":[],\"options\":{\"BinaryName\":\"\",\"CriuImagePath\":\"\",\"CriuWorkPath\":\"\",\"IoGid\":0,\"IoUid\":0,\"NoNewKeyring\":false,\"Root\":\"\",\"ShimCgroup\":\"\",\"SystemdCgroup\":true},\"privileged_without_host_devices\":false,\"privileged_without_host_devices_all_devices_allowed\":false,\"cgroupWritable\":false,\"baseRuntimeSpec\":\"\",\"cniConfDir\":\"\",\"cniMaxConfNum\":0,\"snapshotter\":\"\",\"sandboxer\":\"podsandbox\",\"io_type\":\"\"}},\"ignoreBlockIONotE

?如果沒有此配置,則手動添加即可。

找到?[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]?部分(如果沒有則手動創建層級),添加?SystemdCgroup = true

root@k8s-master:~# cat /etc/containerd/config.toml | grep -ni -C 5 'systemdcgroup'
95-          snapshotter = ''
96-          sandboxer = 'podsandbox'
97-          io_type = ''
98-
99-          [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
100:            SystemdCgroup = true
101-            BinaryName = ''
102-            CriuImagePath = ''
103-            CriuWorkPath = ''
104-            IoGid = 0
105-            IoUid = 0

如果輸出中包含?SystemdCgroup: true,則表示手動配置成功。此配置在 Kubernetes 環境中尤為重要,確保容器的 cgroup 驅動與 kubelet 保持一致(均為 systemd)。?

3. 設置 systemd 服務

直接復制即可

root@k8s-master:~# cat /etc/systemd/system/containerd.service
# Copyright The containerd Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target dbus.service[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerdType=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999[Install]
WantedBy=multi-user.target

4. 啟動并啟用服務?

root@k8s-master:~# systemctl daemon-reload
root@k8s-master:~# systemctl start containerd
root@k8s-master:~# systemctl enable containerd

5. 驗證服務狀態

執行?systemctl status containerd?命令,若輸出中顯示?active(running)?則表示服務啟動成功。

root@k8s-master:~# systemctl status containerd.service 
● containerd.service - containerd container runtimeLoaded: loaded (/etc/systemd/system/containerd.service; enabled; vendor preset: enabled)Active: active (running) since Sat 2025-07-19 09:57:57 CST; 12s agoDocs: https://containerd.ioMain PID: 3744 (containerd)Tasks: 9Memory: 13.1MCPU: 178msCGroup: /system.slice/containerd.service└─3744 /usr/local/bin/containerdJul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.274448607+08:00" level=info msg="Start recovering state"
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.274750311+08:00" level=info msg="Start event monitor"
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.274911742+08:00" level=info msg="Start cni network conf syncer for default"
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.275083463+08:00" level=info msg="Start streaming server"
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.275362835+08:00" level=info msg="Registered namespace \"k8s.io\" with NRI"
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.275605709+08:00" level=info msg="runtime interface starting up..."
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.275738617+08:00" level=info msg="starting plugins..."
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.275879079+08:00" level=info msg="Synchronizing NRI (plugin) with current runtime stat>
Jul 19 09:57:57 k8s-master containerd[3744]: time="2025-07-19T09:57:57.276191212+08:00" level=info msg="containerd successfully booted in 0.084635s"
Jul 19 09:57:57 k8s-master systemd[1]: Started containerd container runtime.

三、containerd配置國內鏡像源

1. 編輯配置文件

vi /etc/containerd/config.toml

2. 添加鏡像加速配置

在?[plugins."io.containerd.grpc.v1.cri"]?部分下,補充?registry.mirrors?配置(若已有該節點,直接添加內容):?

[plugins."io.containerd.grpc.v1.cri"]# 已有的其他配置...[plugins."io.containerd.grpc.v1.cri".registry][plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://docker.1panel.live","https://docker.1ms.run","https://dytt.online","https://lispy.org","https://docker-0.unsee.tech","https://docker.xiaogenban1993.com","https://666860.xyz","https://hub.rat.dev","https://docker.m.daocloud.io","https://demo.52013120.xyz","https://proxy.vvvv.ee","https://registry.cyou"]

3. 重啟 containerd 生效

systemctl daemon-reload
systemctl restart containerd
  • 上述?endpoint?列表包含多個國內可用的 DockerHub 加速鏡像,若某個地址不可用,會自動嘗試下一個。
  • 配置后,containerd 拉取?docker.io?鏡像時會優先使用這些加速源,提升拉取速度。

四、Containerd常用命令匯總

1. 名稱空間管理:資源隔離的核心

名稱空間是 Containerd 實現資源隔離的關鍵機制,通過不同的命名空間,可以將容器、鏡像等資源進行邏輯劃分,避免相互干擾。

2. 基本操作示例

  • 查看所有名稱空間
ctr ns ls

該命令會列出當前系統中所有的 Containerd 名稱空間,方便了解資源隔離的范圍。

  • 創建名稱空間
ctr ns create myonly

新建一個名為 myonly 的名稱空間,后續可在該空間內管理獨立的容器和鏡像。

  • 刪除名稱空間
ctr ns rm linux96

刪除不再使用的 linux96 名稱空間,注意刪除前需確保該空間內無運行的容器或重要鏡像。

  • 帶標簽創建名稱空間
ctr ns c linux96 linux97=true

創建 linux96 名稱空間時添加標簽 linux97=true,便于對名稱空間進行分類管理。

3. 鏡像管理:從拉取到推送的全流程

鏡像作為容器的基礎,其管理包括拉取、標簽、推送、導入導出等操作,Containerd 提供了簡潔高效的命令支持。

3.1. 基礎操作示例
  • 查看指定命名空間的鏡像
ctr -n myonly image ls

通過 -n 參數指定名稱空間 myonly,查看該空間下的所有鏡像列表。

  • 拉取第三方鏡像
ctr -n myonly image pull registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1

從阿里云鏡像倉庫拉取指定鏡像到 myonly 名稱空間,適用于快速獲取所需容器鏡像。

  • 為鏡像打標簽
ctr -n myonly image tag registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 myapp:v1

將原鏡像重新標記為 myapp:v1,方便后續識別和使用。

3.2. 高級操作示例
  • 推送鏡像到 Harbor
ctr image push -u admin:123456 harbor250.myonly.com/library/stress:v0.2

使用 -u 參數指定 Harbor 倉庫的用戶名和密碼,將鏡像推送到私有倉庫,實現鏡像的集中管理。

  • 鏡像導入導出

?# 導出鏡像

ctr image export app_v1.tar.gz registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1

?# 導入鏡像

ctr image import app_v1.tar.gz

通過導出 / 導入操作,可在無網絡環境下遷移鏡像,靈活應對不同部署場景。

  • 刪除指定鏡像
ctr -n myonly image rm myonly:linux96

清理 myonly 名稱空間中不再需要的鏡像,釋放存儲空間。

3.3. 容器生命周期管理:從創建到銷毀的全流程

容器的生命周期包括創建、啟動、暫停、恢復、停止、刪除等階段,Containerd 通過 containers 和 task 命令組實現精細化管理。

4. 容器操作示例

  • 創建容器
ctr -n myonly containers create myapp:v1 app1

在 myonly 名稱空間中,基于 myapp:v1 鏡像創建名為 app1 的容器(此時容器處于未運行狀態)。

  • 查看容器列表
ctr -n myonly containers ls

列出 myonly 名稱空間中所有已創建的容器,包括運行和未運行的狀態。

  • 刪除容器
ctr -n myonly containers rm app1

刪除指定容器,刪除前需確保容器對應的任務已停止。

5. 任務管理示例

  • 啟動容器任務
ctr -n myonly task start -d app1

以后臺模式(-d)啟動 app1 容器的任務,此時容器進入運行狀態。

  • 查看運行中任務
ctr -n myonly task ls

查看 myonly 名稱空間中所有正在運行的容器任務。

  • 進入容器內部
ctr -n myonly task exec -t --exec-id $RANDOM app1 sh

通過 exec 命令進入運行中的 app1 容器,-t 參數分配終端,--exec-id 指定隨機 ID 避免沖突。

  • 任務控制(暫停 / 恢復 / 停止)
# 暫停任務ctr -n myonly task pause app1# 恢復任務ctr -n myonly task resume app1# 停止任務ctr -n myonly task kill app1

靈活控制容器任務的運行狀態,適用于調試或資源調整場景。

6. 存儲與網絡管理:容器的資源配置

6.1. 存儲卷掛載示例

Containerd 支持通過綁定掛載實現宿主機與容器的文件共享,可指定讀寫權限:

  • 只讀掛載
ctr run -d --mount type=bind,src=/host/data,dst=/container/data,options=rbind:ro myapp:v1 app2

將宿主機 /host/data 目錄以只讀模式掛載到容器 /container/data 目錄,防止容器內誤修改宿主機文件。

  • 讀寫掛載
ctr run -d --mount type=bind,src=/host/logs,dst=/container/logs,options=rbind:rw myapp:v1 app3

以讀寫模式掛載目錄,適用于容器需要向宿主機寫入日志、數據等場景。

6.2. 網絡配置示例
  • 共享宿主機網絡
ctr -n myonly run -d --net-host myapp:v1 app4 /bin/sh -c "while true; do sleep 3600; done"

通過 --net-host 參數讓容器共享宿主機的網絡命名空間,容器可直接使用宿主機的 IP 和端口。

7. 監控與排錯:保障容器穩定運行

7.1. 容器指標查看
ctr -n myonly task metrics app1

查看 app1 容器的資源使用指標,包括 CPU、內存、I/O 等,幫助分析容器性能。

7.2. 常見報錯處理
  • HTTPS 證書錯誤

錯誤現象:x509: certificate signed by unknown authority

解決方案:

    1. 確保 CA 證書正確安裝到 /etc/docker/certs.d/域名目錄
    1. 使用 --plain-http 參數強制使用 HTTP 協議
  • 鏡像推送認證失敗

錯誤現象:401 Unauthorized

解決方案:

ctr image push --plain-http -u 用戶名:密碼 鏡像名

8. 高級特性與實用命令

8.1. 跨命名空間操作
ctr -n 命名空間名

通過 -n 參數可直接操作指定命名空間的資源,無需切換上下文。

8.2. 快照管理

(需參考官方文檔進行深度配置)

8.3. 鏡像導出
ctr image export 導出文件.tar.gz 鏡像名
8.4. 容器日志查看
ctr -n myonly task logs app1
8.5. 資源限制
ctr run --memory-limit 512M --cpus 1 鏡像名 容器名
8.6. 容器元數據查看
ctr -n myonly containers info app1

9. 常用命令匯總表

操作類別

命令用途

示例命令

名稱空間管理

查看命名空間

ctr ns ls

名稱空間管理

創建命名空間

ctr ns create myonly

鏡像管理

拉取鏡像

ctr -n myonly image pull 鏡像地址

鏡像管理

推送鏡像到倉庫

ctr image push -u 用戶名:密碼 鏡像名

容器管理

創建容器

ctr -n myonly containers create 鏡像名 容器名

容器管理

啟動容器任務

ctr -n myonly task start -d 容器名

存儲管理

只讀掛載目錄

ctr run -d --mount type=bind,src=/host,dst=/container,options=rbind:ro 鏡像名 容器名

網絡配置

共享宿主機網絡

ctr run -d --net-host 鏡像名 容器名

監控排錯

查看容器指標

ctr -n myonly task metrics 容器名

高級操作

限制容器資源

ctr run --memory-limit 512M --cpus 1 鏡像名 容器名

通過上述命令,你可以輕松完成 Containerd 從基礎到進階的各項操作。無論是日常的容器管理,還是復雜的鏡像分發與資源控制,這些命令都能滿足你的需求。在實際使用中,可根據具體場景靈活組合,提升容器管理效率。

五、總結

通過以上步驟,完全可以在 Ubuntu 22.04 上手動完成了 Containerd 容器運行時的安裝與配置,包括核心組件、runc 和 CNI 插件的安裝,以及相關服務的設置。完成后,可以基于此環境進行容器開發,或作為 Kubernetes 集群的一部分使用。如果需要管理容器,可進一步安裝?nerdctl?工具(與 Docker CLI 兼容),以便更便捷地操作容器。祝入門順利!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92291.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hadoop與云原生集成:彈性擴縮容與OSS存儲分離架構深度解析

Hadoop與云原生集成的必要性Hadoop在大數據領域的基石地位作為大數據處理領域的奠基性技術,Hadoop自2006年誕生以來已形成包含HDFS、YARN、MapReduce三大核心組件的完整生態體系。根據CSDN技術社區的分析報告,全球超過75%的《財富》500強企業仍在使用Had…

飛算科技:以創新科技引領數字化變革,旗下飛算 JavaAI 成開發利器

作為國家級高新技術企業,飛算科技專注于自主創新,在數字科技領域持續深耕,用前沿技術為各行業客戶賦能,助力其實現數字化轉型升級的飛躍。?飛算科技憑借深厚的技術積累,將互聯網科技、大數據、人工智能等技術與實際應…

多線程Python爬蟲:加速大規模學術文獻采集

1. 引言 在學術研究過程中,高效獲取大量文獻數據是許多科研工作者和數據分析師的需求。然而,傳統的單線程爬蟲在面對大規模數據采集時,往往效率低下,難以滿足快速獲取數據的要求。因此,利用多線程技術優化Python爬蟲&a…

NX717NX720美光固態閃存NX724NX728

美光NX系列固態閃存深度解析:技術、性能與市場洞察一、技術架構與核心創新美光NX系列固態閃存(包括NX717、NX720、NX724、NX728)的技術根基源于其先進的G9 NAND架構。該架構通過5納米制程工藝和多層3D堆疊技術,實現了存儲單元密度…

淺談——C++和C#差異

雖然這個話題看著似乎有些關公戰秦瓊的味道,但是作為游戲開發者,C和C#一定是繞不開的兩門語言。不過雖然說是比較二者差異,因為我學習的過程主要是先學C,所以我先基于C的認知,再來聊聊C#之中的不同。(為什么…

rocky9-zabbix簡單部署

目錄 一、準備 1、(rocky9) 2、配置數據庫 二、配置文件 1、導入初始架構與數據 2、配置相關文件 三、啟動服務 1、瀏覽器訪問 2、解決亂碼問題 ?編輯 四、監控 ① 添加主機 1、修改配置文件 2、啟動服務 3、網頁添加 ②添加監控模塊 1…

tabBar設置底部菜單選項、iconfont圖標(圖片)庫、模擬京東app的底部導航欄

歡迎來到我的UniApp技術專欄!🎉 在這里,我將與大家分享關于UniApp開發的實用技巧、最佳實踐和項目經驗。 專欄特色: 📱 跨平臺開發一站式解決方案 🚀 從入門到精通的完整學習路徑 💡 實戰項目經…

7.22總結mstp,vrrp

一、MSTP技術MSTI和MSTI域根MSTP中的端口角色3. MSTP工作原理 MSTP 計算方法? CST/IST的計算和RSTP類似 ? MSTI的計算僅限于區域內 ? MSTI計算參數包含在IST BPDU中,和IST的計 算同步完成&#xfe…

【電腦】網卡的基礎知識

網卡(Network Interface Card, NIC)是計算機中用于連接網絡的關鍵組件之一,它負責管理和發送數據包到互聯網或其他局域網設備。下面是一些關于網卡的詳細知識:網卡的基本結構MAC地址:每個網卡都有一個唯一的物理地址&a…

IPv4枯竭時代:從NAT技術到IPv6的演進之路

🔍 開發者資源導航 🔍🏷? 博客主頁: 個人主頁📚 專欄訂閱: JavaEE全棧專欄 IPv4(Internet Protocol version 4)是互聯網最核心的通信協議之一,自 1981 年正式標準化以來…

模式結構-微服務架構設計模式

需求(Forces)結果上下文(Resulting context)相關模式(Related patterns)需求:必須解決的問題需求部分描述了必須解決的問題和圍繞這個問題的特定上下文環境。需求有時候是相互沖突的,所以不能指望把他們全部都解決(必須取舍&#…

30個常用的Linux命令匯總和實戰場景示例

下面匯總常用的 30 個常用的 Linux 命令,每個都附有簡要說明和典型示例,適合日常開發、服務器維護或系統學習使用。30 個常用的 Linux 命令匯總 一、文件與目錄操作(基礎)命令說明示例ls列出文件和目錄ls -l 顯示詳細信息cd切換目…

Taro 網絡 API 詳解與實用案例

Taro 網絡 API 詳解與實用案例 在現代前端開發中,網絡通信是不可或缺的一環。Taro 作為一款多端開發框架,提供了豐富且統一的網絡 API,幫助開發者在小程序、H5、React Native 等多端環境下高效地進行數據交互。本文將詳細介紹 Taro 的四大網…

Bitbucket平臺的HTTP Access Tokens操作手冊

在Bitbucket平臺添加HTTP Access Tokens(用于替代密碼進行認證)。 1. 登錄Bitbucket并訪問個人設置 打開 Bitbucket 并登錄賬號。點擊右上角頭像 → 選擇 Manage account。 2. 生成Access Token 在左側菜單中選擇 Access tokens(位于 Sec…

低成本、高泛化能力的無人機自主飛行!VLM-Nav:基于單目視覺與視覺語言模型的無地圖無人機導航

作者:Gobinda Chandra Sarker1^{1}1, AKM Azad2^{2}2, Sejuti Rahman1^{1}1, Md Mehedi Hasan1^{1}1單位:1^{1}1達卡大學,2^{2}2伊瑪目穆罕默德伊本沙特伊斯蘭大學論文標題:VLM-Nav: Mapless UAV-Navigation Using Monocular Visi…

Docker Desktop 安裝到D盤(包括wsl)

默認WSL虛擬機位置&#xff1a; C:\Users\<用戶名>\AppData\Local\Docker\wsl重裝DockerDesktop下載安裝包Docker Desktop Installer.exe在D盤創建文件夾D:\Program Files\DockerDesktopD:\Program Files\DockerDesktop\data 在cmd運行 start /w "" "Dock…

網絡協議(三)網絡層 IPv4、CIDR(使用子網掩碼進行網絡劃分)、NAT在私網劃分中的應用

利用子網掩碼進行子網劃分 這是一個模擬搭建的私網&#xff0c;有倆臺主機ab。現在主機a要給云端服務器發送一條消息&#xff0c;這條消息怎么才能到達云端服務器呢&#xff1f;確定這條數據中的源端為本地ip的9000端口&#xff0c;目的端為24.24.24.8888端口&#xff0c;首先&…

8.4 Java 原生 TCP Socket 實現 HTTP 請求解析和請求分發

使用 Java 原生 TCP Socket 實現 HTTP 請求解析和請求分發&#xff0c;是一個理解 HTTP 協議底層原理的好方法。雖然 Java 提供了 HttpServer 類來簡化 HTTP 服務器開發&#xff0c;但如果你想從 TCP 層 開始構建一個簡單的 HTTP 服務器&#xff0c;可以使用 ServerSocket 和 S…

自研能管項目開發界面

自研能管軟件實現一個界面開發 目的&#xff1a; ? 通過接口方式實現展示哪些數據例如&#xff1a; ? 已知制絲車間下的計量電表&#xff0c;在可視化界面通過點擊制絲車間的方式&#xff0c;自動在MySQL存儲制絲車間的電表數據(假設是每分鐘存儲一次)&#xff0c;前端即可以…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 基于wordcloud庫實現詞云圖

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解基于wordcloud庫實現詞云圖 視頻在線地址&…