安裝nerdctl和buildkitd腳本命令

#!/bin/bash
set -euo pipefail

# 檢查是否以root權限運行
if [ "$(id -u)" -ne 0 ]; then
? ? echo "錯誤:請使用root權限或sudo運行本腳本" >&2
? ? exit 1
fi

# 檢測openEuler系統(兼容大小寫)
detect_distribution() {
? ? if [ -f /etc/os-release ]; then
? ? ? ? . /etc/os-release
? ? ? ? # 匹配ID為openEuler(兼容大小寫,如"openEuler"或"openeuler")
? ? ? ? if [[ "$ID" =~ ^[Oo]pen[Ee]uler$ ]]; then
? ? ? ? ? ? echo "openeuler"
? ? ? ? else
? ? ? ? ? ? echo "unsupported"
? ? ? ? fi
? ? else
? ? ? ? echo "unsupported"
? ? fi
}

DISTRO=$(detect_distribution)
if [[ "$DISTRO" != "openeuler" ]]; then
? ? echo "錯誤:本腳本僅適用于openEuler系統" >&2
? ? exit 1
fi

# 安裝前置依賴(openEuler 25.03使用dnf)
install_dependencies() {
? ? dnf update -y
? ? dnf install -y \
? ? ? ? curl \
? ? ? ? gnupg \
? ? ? ? ca-certificates \
? ? ? ? jq \
? ? ? ? tar \
? ? ? ? gzip \
? ? ? ? device-mapper-persistent-data \
? ? ? ? lvm2 ?# 容器存儲依賴
}

# 安裝containerd(使用openEuler官方倉庫)
install_containerd() {
? ? # 安裝最新穩定版containerd
? ? dnf install -y containerd

? ? # 優化containerd配置(適配openEuler 25.03的systemd和cgroupv2)
? ? sed -i '/SystemdCgroup =/c\SystemdCgroup = true' /etc/containerd/config.toml
? ? sed -i 's/cri\.containerd\.runtime\.v1\.linux/cri.containerd.untrusted-workload.v1.linux/g' /etc/containerd/config.toml ?# 啟用非信任工作負載支持

? ? # 重啟并啟用服務
? ? systemctl daemon-reload
? ? systemctl restart containerd
? ? systemctl enable containerd
}

# 安裝最新版nerdctl(適配openEuler架構)
install_nerdctl() {
? ? # 獲取最新穩定版(排除預發布)
? ? LATEST_NERDCTL=$(curl -s https://api.github.com/repos/containerd/nerdctl/releases/latest | jq -r '.tag_name')
? ? if [[ -z "$LATEST_NERDCTL" || "$LATEST_NERDCTL" == "null" ]]; then
? ? ? ? echo "獲取nerdctl最新版本失敗,可能是網絡問題" >&2
? ? ? ? exit 1
? ? fi

? ? # 識別架構(支持x86_64/aarch64)
? ? ARCH=$(case $(uname -m) in
? ? ? ? x86_64) echo "amd64" ;;
? ? ? ? aarch64) echo "arm64" ;;
? ? ? ? *) echo "unsupported"; exit 1 ;;
? ? esac)
?? ?
?? ?echo "下載文件:https://github.com/containerd/nerdctl/releases/download/${LATEST_NERDCTL}/nerdctl-${LATEST_NERDCTL#v}-linux-${ARCH}.tar.gz"

? ? # 下載并安裝
? ? curl -fsSL "https://github.com/containerd/nerdctl/releases/download/${LATEST_NERDCTL}/nerdctl-${LATEST_NERDCTL#v}-linux-${ARCH}.tar.gz" \
? ? ? ? | tar -xz -C /usr/local/bin

? ? # 驗證安裝
? ? if ! command -v nerdctl &> /dev/null; then
? ? ? ? echo "nerdctl安裝失敗" >&2
? ? ? ? exit 1
? ? fi
}

# 安裝buildkit并配置systemd服務(適配openEuler)
install_buildkit() {
? ? # 獲取最新穩定版
? ? LATEST_BUILDKIT=$(curl -s https://api.github.com/repos/moby/buildkit/releases/latest | jq -r '.tag_name')
? ? if [[ -z "$LATEST_BUILDKIT" || "$LATEST_BUILDKIT" == "null" ]]; then
? ? ? ? echo "獲取buildkit最新版本失敗,可能是網絡問題" >&2
? ? ? ? exit 1
? ? fi

? ? # 識別架構
? ? ARCH=$(case $(uname -m) in
? ? ? ? x86_64) echo "amd64" ;;
? ? ? ? aarch64) echo "arm64" ;;
? ? ? ? *) echo "unsupported"; exit 1 ;;
? ? esac)
?? ?
? ? # 下載并安裝
? ? curl -fL "https://github.com/moby/buildkit/releases/download/${LATEST_BUILDKIT}/buildkit-${LATEST_BUILDKIT}.linux-${ARCH}.tar.gz" \
? ? ? ? | tar -xz -C /usr/local

? ? # 創建buildkitd服務文件(優化openEuler集成)
? ? cat > /etc/systemd/system/buildkitd.service <<EOF
[Unit]
Description=BuildKit Daemon for openEuler 25.03
Documentation=https://github.com/moby/buildkit
After=network.target containerd.service
Requires=containerd.service

[Service]
Type=simple
ExecStart=/usr/local/bin/buildkitd \
? ? --oci-worker=true \
? ? --containerd-worker=true \
? ? --containerd-worker-namespace=k8s.io \
? ? --addr=unix:///run/buildkit/buildkitd.sock \
? ? --oci-worker-snapshotter=overlayfs
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

[Install]
WantedBy=multi-user.target
EOF

? ? # 啟動服務并配置開機自啟
? ? systemctl daemon-reload
? ? systemctl start buildkitd
? ? systemctl enable buildkitd
}

# 主執行流程
echo "=== 檢測到openEuler 25.03系統,開始安裝 ==="

echo "=== 1/4 安裝前置依賴 ==="
install_dependencies

echo "=== 2/4 安裝并配置containerd ==="
install_containerd

echo "=== 3/4 安裝最新版nerdctl ==="
install_nerdctl

echo "=== 4/4 安裝并配置buildkit ==="
install_buildkit

echo "=== 安裝驗證 ==="
echo "nerdctl版本: $(nerdctl --version)"
echo "buildkitd狀態: $(systemctl is-active buildkitd)"
echo "containerd狀態: $(systemctl is-active containerd)"

echo "安裝完成!nerdctl和buildkit已配置為開機啟動"
? ??

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

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

相關文章

實現視頻分片上傳 OSS

訪問 OSS 有兩種方式&#xff0c;本文用到的是使用臨時訪問憑證上傳到 OSS&#xff0c;不同語言版本的代碼參考&#xff1a; 使用STS臨時訪問憑證訪問OSS_對象存儲(OSS)-阿里云幫助中心 1.安裝并使用 首先我們要安裝 OSS&#xff1a; npm install ali-oss --save 接著我們…

動態規劃(3)學習方法論:構建思維模型

引言 動態規劃是算法領域中一個強大而優雅的解題方法,但對于許多學習者來說,它也是最難以掌握的算法范式之一。與貪心算法或分治法等直觀的算法相比,動態規劃往往需要更抽象的思維和更系統的學習方法。在前兩篇文章中,我們介紹了動態規劃的基礎概念、原理以及問題建模與狀…

elementplus el-tree 二次封裝支持配置刪除后展示展開或折疊編輯復選框懶加載功能

本文介紹了基于 ElementPlus 的 el-tree 組件進行二次封裝的 TreeView 組件&#xff0c;使用 Vue3 和 JavaScript 實現。TreeView 組件通過 props 接收樹形數據、配置項等&#xff0c;支持懶加載、節點展開/收起、節點點擊、刪除、編輯等操作。組件內部通過 ref 管理樹實例&…

2025年滲透測試面試題總結-安恒[實習]安全工程師(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 安恒[實習]安全工程師 一面 1. 自我介紹 2. 前兩段實習做了些什么 3. 中等難度的算法題 4. Java的C…

網絡編程中的直接內存與零拷貝

本篇文章會介紹 JDK 與 Linux 網絡編程中的直接內存與零拷貝的相關知識&#xff0c;最后還會介紹一下 Linux 系統與 JDK 對網絡通信的實現。 1、直接內存 所有的網絡通信和應用程序中&#xff08;任何語言&#xff09;&#xff0c;每個 TCP Socket 的內核中都有一個發送緩沖區…

TransmittableThreadLocal使用場景

&#x1f680; 為什么要用 TransmittableThreadLocal&#xff1f;一文讀懂線程上下文傳遞問題 在 Java Web 開發中&#xff0c;我們經常用 ThreadLocal 來保存每個請求的用戶信息&#xff0c;例如 userId。但當我們使用線程池或異步方法&#xff08;如 Async&#xff09;時&am…

Milvus(24):全文搜索、文本匹配

1 全文搜索 全文搜索是一種在文本數據集中檢索包含特定術語或短語的文檔&#xff0c;然后根據相關性對結果進行排序的功能。該功能克服了語義搜索的局限性&#xff08;語義搜索可能會忽略精確的術語&#xff09;&#xff0c;確保您獲得最準確且與上下文最相關的結果。此外&…

2000 元以下罕見的真三色光源投影儀:雷克賽恩Cyber Pro1重新定義入門級投影體驗

當性價比遇上技術瓶頸 在 2000元以下的1080P投影儀&#xff0c;單LCD 技術長期主導。而三色光源的DLP和3LCD真1080P都在4000元以上。 單LCD投影為純白光光源&#xff0c;依賴CF濾光膜導致光效低下&#xff0c;普遍存在" 色彩失真 " 等問題。數據顯示&#xff0c;該價…

Maven 下載安裝與配置教程

## 1. Maven 簡介 Maven 是一個項目管理和構建自動化工具&#xff0c;主要用于 Java 項目。Maven 可以幫助開發者管理項目的構建、報告和文檔&#xff0c;簡化項目依賴管理。 ## 2. 下載 Maven 1. 訪問 Maven 官方網站 [https://maven.apache.org/download.cgi](https://maven.…

C# 深入理解類(從類的外部訪問靜態成員)

從類的外部訪問靜態成員 在前一章中&#xff0c;我們看到使用點運算符可以從類的外部訪問public實例成員。點運算符由實 例名、點和成員名組成。 就像實例成員&#xff0c;靜態成員也可以使用點運算符從類的外部訪問。但因為沒有實例&#xff0c;所以最常 用的訪問靜態成員的方…

Java在微服務架構中的最佳實踐:從設計到部署

在2025年的云計算和分布式系統時代&#xff0c;微服務架構已成為構建高可擴展、高可用系統的標準方法&#xff0c;廣泛應用于電商、金融和物聯網等領域。Java憑借其成熟的生態系統、強大的并發支持和跨平臺能力&#xff0c;是微服務開發的首選語言。例如&#xff0c;我們的訂單…

文件讀取漏洞路徑與防御總結

文件讀取漏洞路徑與防御總結 文件讀取漏洞允許攻擊者通過路徑遍歷等手段訪問未授權的文件。以下是Linux和Windows系統中常見敏感路徑的歸納及防御建議&#xff1a; Linux 系統常見敏感路徑 系統關鍵文件&#xff1a; /etc/passwd&#xff1a;用戶賬戶信息&#xff08;可被用來…

react-router基本寫法

1. 創建項目并安裝所有依賴 npx create-react-app react-router-pro npm i 2. 安裝所有的 react router 包 npm i react-router-dom 3. 啟動項目 npm run start router/index.js // 創建路由實例 綁定path elementimport Layout from "/pages/Layout"; import…

uni-app 開發HarmonyOS的鴻蒙影視項目分享:從實戰案例到開源后臺

最近&#xff0c;HBuilderX 新版本發布&#xff0c;帶來了令人興奮的消息——uni-app 現在支持 Harmony Next 平臺的 App 開發。這對于開發者來說無疑是一個巨大的福音&#xff0c;意味著使用熟悉的 Vue 3 語法和開發框架&#xff0c;就可以為鴻蒙生態貢獻自己的力量。 前言 作…

純css實現蜂窩效果

<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>蜂窩效果</title><style>body {margin: 0…

JAVA EE_HTTP

為什么意氣風發的少年&#xff0c;總是聽不進去別人的勸解。 ??????? ??????? ----------陳長生. ?主頁&#xff1a;陳長生.-CSDN博客? &#x1f4d5;上一篇&#xff1a;JAVA EE_網絡原理_數據鏈路層-CSDN博客 1.HTTP 1.1.HTTP是什么 H…

存儲扇區分配表:NAND Flash與SD NAND(貼片式SD卡)的架構差異

NAND Flash 和 SD 卡&#xff08;SD NAND&#xff09;的存儲扇區分配表在原理上有相似之處&#xff0c;但由于二者的結構和應用場景不同&#xff0c;也存在一些差異。 相同點&#xff1a; 基本功能&#xff1a;NAND Flash 和 SD 卡&#xff08;SD NAND&#xff09;的存儲扇區分…

界面控件DevExpress WinForms中文教程:Banded Grid View - API

DevExpress WinForms擁有180組件和UI庫&#xff0c;能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序&#xff0c;無論是Office風格的界面&#xff0c;還是分析處理大批量的業務數據&#xff0c;它都能輕松勝…

4G物聯網模塊實現廢氣處理全流程數據可視化監控配置

一、項目背景 隨著工業化進程的加速&#xff0c;工業廢氣的排放對環境造成了嚴重影響&#xff0c;廢氣處理廠應運而生。然而&#xff0c;廢氣處理廠中的設備眾多且分散&#xff0c;傳統的人工巡檢和數據記錄方式效率低下&#xff0c;難以及時發現問題。為了實現對廢氣處理設備…

Kubernetes控制平面組件:Kubelet詳解(四):gRPC 與 CRI gRPC實現

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…