在服务器上使用Docker buildx构建适用于jetson(linux/arm64/v8)平台的镜像

1 背景

该镜像内置了deepface人脸识别功能

在服务器上构建好的镜像,在jetson上加载该镜像时出现平台不匹配问题WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v8) and no specific platform was requested.
原因:

dockers镜像的系统架构类型和主机(虚拟机)的系统架构类型不一样。

Docker 提供了一种名为 Buildx 的功能,它允许在不同的平台上进行多架构构建。因此考虑使用 Buildx 在 amd64 平台上构建适用于 linux/arm64/v8 平台的 Docker 镜像。

#查看服务器系统架构
ubuntu@ubuntu-server:~$ uname -m
x86_64
ubuntu@ubuntu-server:~$ dpkg --print-architecture
amd64
#查看jetson系统架构
nvidia@ubuntu:~$ uname -m
aarch64
#查看jetson操作系统位数
nvidia@ubuntu:~$ dpkg --print-architecture
arm64

2 创建镜像

2.1 启用Buildx

确保Docker 安装中已启用 Buildx。可以运行以下命令来检查:

ubuntu@ubuntu-server:~$ docker buildx version
github.com/docker/buildx v0.8.1-docker 5fac64c2c49dae1320f2b51f1a899ca451935554
#如果输出如上字样或者包含 "multi-platform" 或 "builder" 字样,那么 Buildx 已启用。否则,需要确保 Docker 版本符合要求,并启用实验性功能。

2.2 修改Dockerfile

在使用前文Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)的Dockerfile构建镜像时,buildx提示无法找到waf/mllab镜像,出现了Docker buildx 无法找到本地 docker 镜像的问题(待解决)。
因此修改Dockerfile内容如下:

#base image
#FROM python:3.8
#修改基础镜像,因为要使用gpu
FROM nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04
LABEL org.opencontainers.image.source https://github.com/serengil/deepface

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&  echo "Asia/Shanghai" > /etc/timezone
# -----------------------------------
# create required folder
RUN mkdir /app
RUN mkdir /app/deepface
# -----------------------------------
# Copy required files from repo into image
COPY ./deepface /app/deepface
  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waf13916

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值