這篇文章將為大家詳細講解有關如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發部署環境,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
首先,從下載buildkit最新版,它跟docker,openfaas,containerd一樣,都是清一色的go binary,采用《一種混合包管理和容器管理方案,及在tinycorelinux上安裝containerd和openfaas》同樣的tcz構建方法,將下載到的v0.8.1的buildkit包的所有bin放到一個squashfs-root/usr/local/bin中(不用加chmod + x因為下載包里自帶),然后新建一個squashfs-root/usr/local/etc/init.d/,里面放二個chmod +x ./buildkit ./makedockerconfig:
這是makedockerconfig中的內容,buildkit+containerd代替了整個docker作構建工具和運行時(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就是一種能代替密碼,實現有限權限子賬戶的機制。dockerhub后臺可以得到。由于tc11是沒有base64的,這個工具在coreutils.tcz中。稍后建成的buildkit.tcz將依賴一條coreutils.tcz
這是buildkit中的內容,/usr/local/bin/buildkitd &,(你可以按上文添加額外參數設置為runc或containerd后端,默認為runc),為應用包在/init.d/寫隨著系統啟動的啟動文件,特別要注意,在命令后必要處加&,否則前臺命令會block啟動流程。在前文中,faasd和containerd都是這樣處理的。
寫好dep(依賴coreutils和containerd,attr.tcz:buildkit使用xattr相關命令)和md5.txt,打包成tcz,安裝在tc11中,現在來測試一下,建立一個測試倉庫并: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,構建tc11用的config-5.4.3-tinycore64中并沒有開啟CONFIG_EXT3_FS,也沒有開啟CONFIG_EXT3_FS_XATTR,導致buildkit調用xattr相關命令時不成功。因此重新編譯內核。注意要sudo make install,不能僅sudo make在arch/boot/x86/compressed下得到vmlinux,而要在install過后的/boot下得到vmlinuz。否則雖然編譯成功,但kernel image運行不了,會提示invalid magic number
安裝好kernel image,重啟,問題解決。你就可以實現在local容器中免registry commit了。最后在命令中按是否需要上傳到dockerhub,加個push=true一下。
當然這一切現在只是命令行方式進行,并沒有上升到整合為openfaas 8080/ui那個后臺的界面功能。但作為上文提到的方案2,接下來的vscode mount就好多了。
我們下載的是cdr的code-server-3.8.0-amd64,按 《panel.sh:一個nginx+docker的云函和在線IDE面板,發明你自己的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服務,導致發生異常,故強行指定/root/.config/。
然后你就可以按https://code.visualstudio.com/docs/remote/containers-advanced嘗試vscode.tcz + mount方案了
未來我們將code-server中綁定的nodejs發行版本獨立出來用獨立tcz代替,這才符合tcz一個軟件一個包的適當粒度劃分。
關于“如何在tc上安裝buildkit.tcz、vscode.tcz、打通vscodeonline與openfaas模擬cloudbase打造碎片化編程開發部署環境”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。