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

avatar
作者
筋斗云
阅读量:2

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!