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