这篇文章将为大家详细讲解有关如何在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。