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

服务器 0

Docker buildx构建适用于jetson(linux/arm64/v8)平台的镜像

  • 1 背景
  • 2 创建镜像
    • 2.1 启用Buildx
    • 2.2 修改Dockerfile
    • 2.3 构建镜像
    • 2.4 运行容器
    • 2.5 apt配置国内源
    • 2.6 更换cudnn
    • 2.7 容器生成新镜像
    • 2.8 镜像导出成tar包
    • 2.9 jetson加载镜像

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 -mx86_64ubuntu@ubuntu-server:~$ dpkg --print-architectureamd64
#查看jetson系统架构nvidia@ubuntu:~$ uname -maarch64#查看jetson操作系统位数nvidia@ubuntu:~$ dpkg --print-architecturearm64

2 创建镜像

2.1 启用Buildx

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

ubuntu@ubuntu-server:~$ docker buildx versiongithub.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#修改基础镜像,因为要使用gpuFROM nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04LABEL org.opencontainers.image.source https://github.com/serengil/dee

也许您对下面的内容还感兴趣: