Docker buildx构建多平台镜像-基于Mac Book

  金牌会员 | 2025-1-23 17:55:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 954|帖子 954|积分 2862

最近需要构建镜像摆设到服务器上,但是我电脑的体系平台构建出来的镜像在租的服务器上无法运行,厥后发现原来是平台不一样。接着我学习了怎样用docker buildx构建多平台的镜像,下面是我总结的条记。
1. 检察内核版本

检察内核版本的下令:
  1. uname -a
  2. uname -r
  3. cat /proc/version
  4. lsb_release -a
复制代码
这是我当地的内核版本:
  1. uname -a
复制代码
可以看到我的条记本内核是arm64的:

再检察一下我们要摆设的服务器的内核:
  1. lsb_release -a
复制代码
可以看到我租的阿里云服务器内核是amd64的:

2. docker buildx安装使用

2.1 docker buildx版本检察以及安装

先检察docker的版本(docker 版本V19.0以上才支持docker buildx):
  1. docker -V
复制代码

检察有没有安装docker buildx(因为我用的是Mac桌面版的Docker,所以默认已经开启):
  1. docker buildx version
复制代码

如果没有安装的话,实行以下下令安装:
  1. docker buildx install
复制代码
启用docker buildx:
  1. export DOCKER_CLI_EXPERIMENTAL=enabled
复制代码
2.2 docker buildx构建器创建

检察构建器有哪些:
  1. docker buildx ls
复制代码
我当地的docker buildx目前有以下构建器:

运行一个支持多平台内核的容器(如果是桌面版的可以跳过该步骤):
  1. $ docker run --rm --privileged tonistiigi/binfmt:latest --install all
复制代码
接下来我们来创建一个构建器(dockerpracticesig/buildkit:master 是一个加快镜像):
  1. docker buildx create --use --name=mybuilder-cn-test --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master
复制代码

检察刚刚创建的构建器(但是可以看到状态是不可用的):

我们来初始化一下这个构建器:
  1. docker buildx inspect --bootstrap mybuilder-cn-test
复制代码

再次检察,可以看到已经是running状态了:

2.3 docker buildx构建多平台镜像

设置使用的构建器:
  1. docker buildx use mybuilder-cn-test
复制代码
我们先用一个python项目myerp举个例子:
Dockerfile:
  1. # 使用官方 Python 基础镜像
  2. FROM --platform=linux/amd64 centos:7
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 复制项目文件到容器中
  6. COPY . /app
  7. # 安装设置清华源并依赖包
  8. # 暴露端口
  9. EXPOSE 8081
  10. CMD ["/app/install.sh"]
  11. # 启动应用
  12. CMD ["/app/start.sh"]
复制代码
install.sh
  1. python3 -m venv ./venv
  2. chmod +x ./venv/bin/activate
  3. source ./venv/bin/activate
  4. ./venv/bin/activate
  5. ./venv/bin/python3 -m pip install --upgrade pip
  6. ./venv/bin/pip3 install -r ./requirements.txt
  7. ./venv/bin/python3 app.py
复制代码
构建多平台镜像:
--platform 后面跟镜像需要支持的Linux内核版本
-t 后面跟镜像的名称
. 为Dockerfile所在的目录
--load:加载到当地镜像中
--push:推送到远程镜像库
  1. docker buildx build --platform linux/arm,linux/arm64,linux/amd64 -t myerp:v1.0 . --load
复制代码

可以看到已经构建乐成了:

检察镜像详细信息:
  1. docker inspect myerp:v1.0
复制代码
可以检察到我们已经构建出一个amd64 的镜像了:

3. 镜像打包到新环境运行

镜像打包:
  1. docker save -o myerp.zip myerp:v1.0
复制代码

上传到新的服务器之后加载镜像:
  1. docker load -i myerp.zip
复制代码


最后就可以用镜像创建并且运行容器,以下表明容器已经乐成运行起来了:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表