溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》
  • 首頁 > 
  • 教程 > 
  • 服務(wù)器 > 
  • 云計算 > 
  • 如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發(fā)部署環(huán)境

如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發(fā)部署環(huán)境

發(fā)布時間:2021-11-25 11:53:19 來源:億速云 閱讀:211 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關(guān)如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發(fā)部署環(huán)境,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

buildkit.tcz+instant commit

首先,從下載buildkit最新版,它跟docker,openfaas,containerd一樣,都是清一色的go binary,采用《一種混合包管理和容器管理方案,及在tinycorelinux上安裝containerd和openfaas》同樣的tcz構(gòu)建方法,將下載到的v0.8.1的buildkit包的所有bin放到一個squashfs-root/usr/local/bin中(不用加chmod + x因為下載包里自帶),然后新建一個squashfs-root/usr/local/etc/init.d/,里面放二個chmod +x ./buildkit ./makedockerconfig:

這是makedockerconfig中的內(nèi)容,buildkit+containerd代替了整個docker作構(gòu)建工具和運行時(containerd不能build,ctr image build沒有這個命令),但配置文件用的還是對接dockerhub的那一套。

read -p "enter your dockerhub username:" DOCKERHUB_USERNAME
read -p "enter your dockerhub personal access token:" DOCKERHUB_TOKEN
rm -rf ~/.docker/config.json
mkdir -p ~/.docker/
cat > ~/.docker/config.json << EOF
{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "$(echo -n $DOCKERHUB_USERNAME:$DOCKERHUB_TOKENT | base64)"
        }
    }
}
EOF
cp -f ~/docker/config.json /var/lib/faasd/config.json

解釋一下,所謂access token就是一種能代替密碼,實現(xiàn)有限權(quán)限子賬戶的機制。dockerhub后臺可以得到。由于tc11是沒有base64的,這個工具在coreutils.tcz中。稍后建成的buildkit.tcz將依賴一條coreutils.tcz

這是buildkit中的內(nèi)容,/usr/local/bin/buildkitd &,(你可以按上文添加額外參數(shù)設(shè)置為runc或containerd后端,默認為runc),為應(yīng)用包在/init.d/寫隨著系統(tǒng)啟動的啟動文件,特別要注意,在命令后必要處加&,否則前臺命令會block啟動流程。在前文中,faasd和containerd都是這樣處理的。

寫好dep(依賴coreutils和containerd,attr.tcz:buildkit使用xattr相關(guān)命令)和md5.txt,打包成tcz,安裝在tc11中,現(xiàn)在來測試一下,建立一個測試倉庫并:sudo buildctl build --frontend dockerfile.v0 --local context=./ --local dockerfile=./ --output type=image,name=docker.io/minlearn/dafsdf:latest,出錯了:

......
=> ERROR exporting to image 0.1s
error: failed to solve: rpc error: code = Unknown desc = mount callback failed on /tmp/containerd-mount267804283: mount callback failed on /tmp/containerd-mount706848158: failed to write compressed diff: failed to create diff tar stream: failed to get xattr for /tmp/containerd-mount267804283/bin: operation not supported

這是因為我在tc11中使用的是ext3,構(gòu)建tc11用的config-5.4.3-tinycore64中并沒有開啟CONFIG_EXT3_FS,也沒有開啟CONFIG_EXT3_FS_XATTR,導(dǎo)致buildkit調(diào)用xattr相關(guān)命令時不成功。因此重新編譯內(nèi)核。注意要sudo make install,不能僅sudo make在arch/boot/x86/compressed下得到vmlinux,而要在install過后的/boot下得到vmlinuz。否則雖然編譯成功,但kernel image運行不了,會提示invalid magic number

安裝好kernel image,重啟,問題解決。你就可以實現(xiàn)在local容器中免registry commit了。最后在命令中按是否需要上傳到dockerhub,加個push=true一下。

當(dāng)然這一切現(xiàn)在只是命令行方式進行,并沒有上升到整合為openfaas 8080/ui那個后臺的界面功能。但作為上文提到的方案2,接下來的vscode mount就好多了。

vscode.tcz + mount

我們下載的是cdr的code-server-3.8.0-amd64,按 《panel.sh:一個nginx+docker的云函和在線IDE面板,發(fā)明你自己的paas(2)》的路子將所有文件解壓到squashfs-root的/usr/local/lib/中。然后新建squashfs-root/usr/local/bin,squashfs-root/usr/local/etc/init.d/并依次:

cd squashfs-root/usr/local/bin sudo ln -s ../lib/code-server-3.8.0/bin/code-server code-server sudo chmod +x ./code-server

cd squashfs-root/usr/local/etc/init.d/ sudo touch vscodeonline makevscodeconfig sudo chmod +x ./vscodeonline makevscodeconfig

makevscodeconfig里面放:

read -p "enter your desired access token(plain strings ok):" VSCODE_TOKEN
rm -rf ~/.config/code-server/config.yaml
mkdir -p ~/.config/code-server/
cat > ~/.config/code-server/config.yaml << EOF
bind-addr: 127.0.0.1:5000
auth: password
password: "$(echo $VSCODE_TOKEN)"
cert: false
EOF
mkdir -p /home/tc/.config/code-server/
cp -f /root/.config/code-server/config.yaml /home/tc/.config/code-server/config.yaml

然后是啟動vscodeonline的:/usr/local/bin/code-server --config /root/.config/code-server/config.yaml &

直接打包,直接md5,沒有dep引用。 --config ~/.config/code-server/config.yaml是需要的,因為code-server似乎存在一個bug,它啟動的時候會在~.config下找配置文件,而不是~/.config少了一個/(多了一個/?沒仔細看),且它識別不了~,找不到會自動在8080啟動vscode服務(wù),導(dǎo)致發(fā)生異常,故強行指定/root/.config/。

然后你就可以按https://code.visualstudio.com/docs/remote/containers-advanced嘗試vscode.tcz + mount方案了

未來我們將code-server中綁定的nodejs發(fā)行版本獨立出來用獨立tcz代替,這才符合tcz一個軟件一個包的適當(dāng)粒度劃分。

關(guān)于“如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發(fā)部署環(huán)境”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

tc
AI