杭州建站模板系统,wordpress4.4.2下载,普宁网站建设,站长统计app进入网址新版小猪docker buildx跨架构构建(x86_64构建aarch64镜像) 文章目录 docker buildx跨架构构建(x86_64构建aarch64镜像)简介第一步 先交叉编译一个aarch64的HelloWorld程序。准备一个用于跨架构的Dockerfile文件使用docker buildx命令构建aarch64架构的镜像。查看镜像具体详细信息#…docker buildx跨架构构建(x86_64构建aarch64镜像) 文章目录 docker buildx跨架构构建(x86_64构建aarch64镜像)简介第一步 先交叉编译一个aarch64的HelloWorld程序。准备一个用于跨架构的Dockerfile文件使用docker buildx命令构建aarch64架构的镜像。查看镜像具体详细信息确定镜像是ARM架构测试通过小技巧避免每次下载aarch64架构的基础镜像 简介
Docker Buildx 是 Docker 团队为 Docker 引擎设计的一个工具用于支持构建和管理多平台的容器镜像。它扩展了 Docker 构建工具使得可以跨多个不同的架构和操作系统进行构建。
第一步 先交叉编译一个aarch64的HelloWorld程序。 准备一个用于跨架构的Dockerfile文件
vi Dockerfile
FROM ubuntu:20.04COPY main /app/mainWORKDIR /appCMD [/app/main]使用docker buildx命令构建aarch64架构的镜像。
docker buildx build --platform linux/arm64 -t test:0.1 --load .
# root liuyuelong-System-Product-Name in ~/workspace/cross_test/src/main on git:master x [17:28:46]
$ docker buildx build --platform linux/arm64 -t aarch64_images:1.0 --load .
[] Building 3.4s (9/9) FINISHED docker-container:elegant_davinci [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 111B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/ubuntu:20.04 2.8s [internal] load build context 0.0s transferring context: 14.27kB 0.0s CACHED [1/3] FROM docker.io/library/ubuntu:20.04sha256:ed4a42283d9943135ed87d4ee34e542f7f5ad9ecf2f244870e23122f703f91c2 0.0s resolve docker.io/library/ubuntu:20.04sha256:ed4a42283d9943135ed87d4ee34e542f7f5ad9ecf2f244870e23122f703f91c2 0.0s [2/3] COPY main /app/main 0.0s [3/3] WORKDIR /app 0.0s exporting to oci image format 0.3s exporting layers 0.2s exporting manifest sha256:9354e37bfcc69a2408f10323d76afaa40e96fb04f5ef6260d23ca6f17ec86dad 0.0s exporting config sha256:a858b4c183e0ebdc2e8b217c5557e1f3fb3aebc3df98a0f8cfd5b68673005052 0.0s sending tarball 0.1s importing to docker 0.0s# root liuyuelong-System-Product-Name in ~/workspace/cross_test/src/main on git:master x [17:31:22]
$ docker images | grep aarch64_images
aarch64_images 1.0 a858b4c183e0 43 seconds ago 65.7MB查看镜像具体详细信息确定镜像是ARM架构
# root liuyuelong-System-Product-Name in ~/workspace/cross_test/src/main on git:master x [17:32:10]
$ docker inspect aarch64_images:1.0
[{Id: sha256:a858b4c183e0ebdc2e8b217c5557e1f3fb3aebc3df98a0f8cfd5b68673005052,RepoTags: [aarch64_images:1.0],RepoDigests: [],Parent: ,Comment: buildkit.dockerfile.v0,Created: 2023-11-30T09:31:22.44138137Z,Container: ,ContainerConfig: {Hostname: ,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,Tty: false,OpenStdin: false,StdinOnce: false,Env: null,Cmd: null,Image: ,Volumes: null,WorkingDir: ,Entrypoint: null,OnBuild: null,Labels: null},DockerVersion: ,Author: ,Config: {Hostname: ,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin],Cmd: [/app/main],ArgsEscaped: true,Image: ,Volumes: null,WorkingDir: /app,Entrypoint: null,OnBuild: null,Labels: {org.opencontainers.image.ref.name: ubuntu,org.opencontainers.image.version: 20.04}},Architecture: arm64,Os: linux,Size: 65692279,VirtualSize: 65692279,GraphDriver: {Data: {LowerDir: /var/lib/docker/overlay2/31cdebbee3d9a5cb5222804c1ca5759ce9d9dacc1aa94c9ff5317fe13989aca1/diff,MergedDir: /var/lib/docker/overlay2/6c1bad2064ca4947f86e3a9438c25e7c926cb7d4d65c3cececcd0ce7236ec3cc/merged,UpperDir: /var/lib/docker/overlay2/6c1bad2064ca4947f86e3a9438c25e7c926cb7d4d65c3cececcd0ce7236ec3cc/diff,WorkDir: /var/lib/docker/overlay2/6c1bad2064ca4947f86e3a9438c25e7c926cb7d4d65c3cececcd0ce7236ec3cc/work},Name: overlay2},RootFS: {Type: layers,Layers: [sha256:701ccb11c0525a289459678e1ef3e9269b62737fafb033db91061ae53a0e9c1e,sha256:2ebde9a9a90f240d14d223cb6d6ac61e209f0e871973ceb6c421b3b0569c09d8]},Metadata: {LastTagTime: 0001-01-01T00:00:00Z}}
]Architecture: arm64, 架构没有问题
测试通过
导出镜像 docker save aarch64_images:1.0 -o aarch64_images.img 在aarch64架构下安装镜像 docker load -i aarch64_images.img 运行测试
# docker run --rm aarch64_images:1.0
Hello World!测试通过
小技巧避免每次下载aarch64架构的基础镜像
docker buildx create --use create Create a new builder instance 创建一个新的构造器实例 –use Set the current builder instance 使用创建的构建器实例作为当前的构造器
创建实例后如果使用的话构造器就会被激活并以容器的形式运行在这个容器中在构建过程中下载的基础镜像会被保存在容器中再次构建不需要重新下载基础镜像。
也可以使用命令管理构造器