DevOps之 Docker image支持龙芯loong64架构

Docker image支持loong64架构

Posted by 董江 on Thursday, April 20, 2023

龙芯loong64架构国产指令集合

龙芯loong64架构国产指令集合, 在国内目前最有可能成为国产化标准。 以软件思维建立生态

建立指令集生态:

  • 试水阶段:前几代先从mips64开源指令集,扩展指令mips64le
  • 兼容阶段:龙芯自主指令系统架构 LoongArch,保持与 MIPS、X86、ARM 的兼容性
  • 生态扩展
    • 操作系统层面: 内核kernel 5.19+
    • 编译器层面:javarustgolang编译器;
    • 编译生态:qemu仿真器;docker buildx/buildkit工具;
    • 语言生态包:基础软件包等领域齐头并进

Link:

编译案例使用base image

alpine loong64 base image

dockerhub地址:alpine 3.11.11

$ docker pull --platform linux/loong64 dongjiang1989/alpine:3.11.11

代码代码工程

# Builder
FROM dongjiang1989/alpine:golang-1.19.0-alpine as builder

RUN mkdir -p /go/src/server

WORKDIR /go//src/server/

COPY main.go main.go
COPY vendor/  vendor/
COPY go.sum go.sum
COPY go.mod go.mod

RUN export GOPATH=/go/src
RUN export GO111MODULE=off

RUN  go build -o /demo-server main.go

# Server
FROM dongjiang1989/alpine:golang-1.19.0-alpine

EXPOSE 8080

COPY --from=builder /demo-server /demo-server

ENTRYPOINT ["/demo-server"]

地址:https://github.com/kubeservice-stack/muti-arch/blob/master/Dockerfile.loong64

其他不足之处

  1. Golang周边生态软件package跟进比例不足10%
  2. Qemu仿真器,目前只是支持 3A4000 和 3A5000; 并且 github Action 的 docker/setup-qemu-action 未跟进 (核心:这个导致在github上项目不能批量更新)
  3. Golang、Rust等目前还不支持交叉编译(cross compile)
  4. 基础镜像支持不够全面 并且 没有官方权威支持:比如alpinebullseye

「如果这篇文章对你有用,请随意打赏」

Kubeservice博客

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付