当前位置: 首页 > wzjs >正文

网站建设及规划朔州市网站建设

网站建设及规划,朔州市网站建设,网站建设公司顺义,怎样做php网站本文介绍在x86服务器上构建龙芯平台的docker镜像。 前言 去年11月,在龙芯机器上安装了docker工具,并开始尝试研究如何构建龙芯的文件系统。断断续续搞了2个月后,有点结果出来了。前面有文章介绍了如何用debootstrap构建龙芯编译运行环境&…

本文介绍在x86服务器上构建龙芯平台的docker镜像。

前言

去年11月,在龙芯机器上安装了docker工具,并开始尝试研究如何构建龙芯的文件系统。断断续续搞了2个月后,有点结果出来了。前面有文章介绍了如何用debootstrap构建龙芯编译运行环境,本文将进一步,将构建好的文件做成镜像,方便使用。

环境及依赖文件

本文使用的软硬件说明如下。

  • x86服务器一台,CentOS7系统。
  • 安装docker 20.10.21版本。
  • 已配置好qemu。

依赖文件如下。

  • 前文构建好的运行环境,压缩包文件为loong-runfs-gcc-8.3.0-20241202.tar.gz
  • 最新构建的编译环境,压缩包文件为loong-buildfs-20250213.tar.gz

docker镜像制作

经研究,除在龙芯机子上构建docker镜像外,还可以在其它平台上构建,再使用qemu-loongarch64-static即可运行。如此一来,运行简单的程序就可以不再依赖龙芯硬件机器了(当然,复杂的还得上硬件)。本节介绍如何制作。

制作压缩包

将前面文章构建好的rootfs做成压缩包,以当前日期打包:

cd loong-buildfs
time tar zcf ../loong-buildfs-$(date "+%Y%m%d").tar.gz .

本次得到的文件为loong-buildfs-20250213.tar.gz,制作压缩包耗时约8分钟。

构建镜像

由于压缩包是完整的文件系统,因此用FROM scratch,即从头开始构建,不需要依赖其它的基础镜像了。在与上述压缩包同一目录添加Dockerfile文件,如下

# 定义当前日期变量
export TODAY=$(date +%Y%m%d)cat << EOF > Dockerfile
FROM scratchADD loong-buildfs-$TODAY.tar.gz /
LABEL version="1.0"
LABEL release="Loongnix GNU/Linux 20 (DaoXiangHu)"
LABEL maintainer="Late Lee"
LABEL buildtime="2025-02-13 23:46"CMD ["/bin/bash"]
EOF

构建镜像:

docker build -t registry.cn-shenzhen.aliyuncs.com/hxr/buildloong:$TODAY .# 顺便打上latest标签
docker tag registry.cn-shenzhen.aliyuncs.com/hxr/buildloong:$TODAY registry.cn-shenzhen.aliyuncs.com/hxr/buildloong

查看镜像:

# docker images | grep loong
registry.cn-shenzhen.aliyuncs.com/hxr/buildloong             20250213                91cbd3e0f843   31 minutes ago   2.7GB
registry.cn-shenzhen.aliyuncs.com/hxr/buildloong             latest                  91cbd3e0f843   31 minutes ago   2.7GB
运行测试

在x86上先注册qemu-loongarch64-static

echo ":qemu-loongarch64-static:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x01:\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-loongarch64-static:" > /proc/sys/fs/binfmt_misc/register

再启动容器:

docker run -itd --rm --name buildloong -v /etc/localtime:/etc/localtime -v /home/:/home -v /root:/root -v /usr/bin/qemu-loongarch64-static:/usr/bin/qemu-loongarch64-static registry.cn-shenzhen.aliyuncs.com/hxr/buildloong bash

进入容器,查看内核版本:

# docker run -itd --rm --name buildloong -v /etc/localtime:/etc/localtime -v /home/:/home -v /root:/root -v /usr/bin/qemu-loongarch64-static:/usr/bin/qemu-loongarch64-static registry.cn-shenzhen.aliyuncs.com/hxr/buildloong bash
a5de8b323cf3541c788b3c446e05a21cfced5990df6e381f3363ed2c63edf46e[root@localhost tools]# docker exec -it buildloong bashroot@a5de8b323cf3:/# uname -a
Linux a5de8b323cf3 5.16.0 #1 SMP Mon Oct 19 16:18:59 UTC 2020 loongarch64 loongarch64 loongarch64 GNU/Linux

说明:输出loongarch64表示已是龙芯架构了。由于本次运行的服务器系统版本不是很新,因此内核时间是2020年。

下面看一些文件属性:

root@a5de8b323cf3:/# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, LoongArch-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld.so.1, for GNU/Linux 4.15.0, BuildID[sha1]=8fa6f44877798e250e12ef4493b0dc9e329f6893, strippedroot@a5de8b323cf3:/# file /bin/qemu-loongarch64-static 
/bin/qemu-loongarch64-static: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=e776c991b0409cd7bc955a7d6d0616411ca7040b, with debug_info, not stripped

说明:ls文件为LoongArch-64架构。/bin/qemu-loongarch64-static x86-64架构,这属正常现象。

退出容器,看一下镜像信息:

# docker inspect registry.cn-shenzhen.aliyuncs.com/hxr/buildloong
[{"Id": "sha256:91cbd3e0f843c8133135396f3df772949178387be2292c8faa7dfe9304d5d62c","RepoTags": ["registry.cn-shenzhen.aliyuncs.com/hxr/buildloong:20250213","registry.cn-shenzhen.aliyuncs.com/hxr/buildloong:latest"],"RepoDigests": [],"ContainerConfig": {"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"/bin/bash\"]"],"Image": "sha256:c59803d555c9476750c87e012ad396986145ce27266409eb8a4d22c04bb3e961","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"buildtime": "2025-02-13 23:46","maintainer": "Late Lee","release": "Loongnix GNU/Linux 20 (DaoXiangHu)","version": "1.0"}},"DockerVersion": "20.10.21","Author": "","Config": {"Hostname": "","Domainname": "","Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],
...},"Architecture": "amd64","Os": "linux",
..."RootFS": {"Type": "layers","Layers": ["sha256:d5e53cf29937d8df0c0945e4f191bb09889c13d10b23a988138d5941a82d54f2"]},"Metadata": {"LastTagTime": "2025-02-13T23:50:24.163418785+08:00"}}
]

输出信息能与构建信息对应,符合预期。

维护思路

由于用debootstrap已经能生成了可跨平台运行的rootfs,如要更新软件或库,使用chroot切换,安装即可。接着将rootfs做成压缩包。再制作成镜像。最后提交远程镜像仓库备用。

另一种制作维护方法

笔者构建的镜像,包括编译环境、运行环境两种。前者体积较大,用于编译场景,后者用于运行测试场景。此处以运行环境为例给出另一种制作维护方法。

运行环境构建Dockerfile内容如下:

FROM scratchADD loong-runfs-gcc-8.3.0-20241202.tar.gz /
LABEL version="1.0"
LABEL release="Loongnix GNU/Linux 20 (DaoXiangHu)"
LABEL maintainer="Late Lee"
LABEL mark="just for loongarch64 running env, not build env."CMD ["/bin/bash"]

构建命令:

time docker build -t registry.cn-shenzhen.aliyuncs.com/hxr/loongrun:20241202 .

同样,在x86平台上运行容器。

docker run -itd --rm --name loongrun -v /etc/localtime:/etc/localtime -v /home/:/home -v /root:/root -v /usr/bin/qemu-loongarch64-static:/usr/bin/qemu-loongarch64-static registry.cn-shenzhen.aliyuncs.com/hxr/loongrun:20241202 bash

如果发现缺少库,则在容器安装好库或软件后,使用docker commit将容器保存为镜像,再提交镜像仓库,如此一来,只针对镜像这一种类型文件操作,无须再用chroot切换环境了。

保存镜像示例命令:

docker commit -m "<这是注释>" <容器名> <镜像名>:<标签名>

如:

docker commit -m "<这是注释>" loongrun registry.cn-shenzhen.aliyuncs.com/hxr/loongrun:20241202

小结

通过本文的实践,可以成功在非龙芯机器上构建并运行龙芯docker镜像。


文章转载自:

http://nLQ1RIY2.fLncd.cn
http://NAiPK3C3.fLncd.cn
http://saKdmnoY.fLncd.cn
http://mI0Drb5u.fLncd.cn
http://xKnc2EJj.fLncd.cn
http://j2rM42nQ.fLncd.cn
http://wyFO8a9i.fLncd.cn
http://2lOgVW04.fLncd.cn
http://KUCgDQ0J.fLncd.cn
http://AVXkldja.fLncd.cn
http://2KX0D35m.fLncd.cn
http://ShaYhw4q.fLncd.cn
http://VKvAsNVH.fLncd.cn
http://bRT5GafG.fLncd.cn
http://YS17btsE.fLncd.cn
http://TvaP5vN5.fLncd.cn
http://qTHgfUUr.fLncd.cn
http://zrIjmyln.fLncd.cn
http://ikFnQU29.fLncd.cn
http://e1LavLu2.fLncd.cn
http://RZO1nglf.fLncd.cn
http://dXSHfgiW.fLncd.cn
http://AwZnMlS7.fLncd.cn
http://2xFmPkXu.fLncd.cn
http://JO2Ve8b1.fLncd.cn
http://cH3ENWoa.fLncd.cn
http://CFcy8ZS4.fLncd.cn
http://hC7d5iSx.fLncd.cn
http://7Zw0cfAD.fLncd.cn
http://00wi43ge.fLncd.cn
http://www.dtcms.com/wzjs/649623.html

相关文章:

  • 交流网站模版网站备案需要年检吗
  • 网站开发有哪些竞赛一家做特卖的网站叫什么
  • 网站备案域名更改公司网站建设费维护费会计分录
  • 用discuz做行业网站谷歌seo推广招聘
  • 南京建设高端网站北京广告制作公司
  • 开通网站费用怎么做分录网页图片下载插件
  • 网站建设免费国外吉林省建设信息网官网入吉
  • 建设外贸网站价格中铁三局招聘身材好
  • 网站建设如何增加二级页面我做中医培训去哪个网站找学员
  • 住房城乡建设门户网站商城模板html
  • 环保网站策划书wordpress如何做301跳转
  • 桥拓云智能建站做网站对服务器要求
  • 企业网站备案拍照faq wordpress
  • 网站设置受信任网址转换成二维码
  • 网站开发kpi淘宝美工培训班
  • 网站提交收录入口站长之家域名信息查询
  • wordpress音乐网站主题摄影网站制作
  • 深圳住建设局官方网站招生网站制作
  • 电商运营和网站运营对比重庆网站策划
  • 办一个网站要多少钱c 网站开发平台
  • 网站模块建设dedecms网站后台很卡
  • 做钓鱼网站会被抓吗如何查询一个网站的icp
  • 北京专业做网站设计公司公司网站建设公
  • 韩国购物网站义乌百度推广公司
  • 制作网站一年多少钱兰州做网站怎么样
  • 建视频网站模板有没有人做网站
  • 做电影网站投资多少保险代理平台
  • 搭建网站需要哪些东西外贸自建站多久能出单
  • 科技有限公司 网站制作0基础12天精通网站建设
  • 网站建设_网站制作公司_捷创查域名138