前言
Windows上安装Docker参考
https://www.psvmc.cn/article/2021-03-15-docker-windows.html
Docker 镜像是基于基础镜像构建的,基础镜像本身就包含了特定的操作系统和架构信息。
当你在 Dockerfile 中使用 FROM
指令指定基础镜像时,后续在容器内运行的操作都会基于该基础镜像的架构。
注意
在X86上构建ARM镜像会非常慢,我这里测试的镜像时间是构建X86的10倍还多,所以构建的时候要耐心等待。
构建文件
X86
Dockerfile
1 | # Pull base image |
ARM
Dockerfile_ARM
1 | # Pull base image |
构建镜像
构建x86镜像
1 | docker build -t psvmc/face_recognition:v0.1 . |
运行镜像
1 | docker run -p 8000:8000 --name face_recognition psvmc/face_recognition:v0.1 |
后台运行
1 | docker run -d -p 8000:8000 --name face_recognition --restart=always psvmc/face_recognition:v0.1 |
查看启动日志
1 | docker logs face_recognition |
删除
1 | docker stop face_recognition |
构建ARM镜像
QEMU是一个开源的模拟器,它可以在x86架构上模拟ARM架构的环境。
通过执行以下命令来安装QEMU二进制文件:
1 | docker run --privileged --rm tonistiigi/binfmt --install all |
在包含Dockerfile的目录下,使用以下命令构建ARM镜像:
1 | docker buildx build -f Dockerfile_ARM --platform linux/arm64 -t psvmc/face_recognition_arm:v0.1 . |
其中
--platform linux/arm64
指定了要构建的镜像为ARM 64位架构。
运行ARM镜像
1 | docker run --platform linux/arm64 psvmc/face_recognition_arm:v0.1 |
运行
1 | docker run -d -p 8000:8000 --name face_recognition_arm --restart=always psvmc/face_recognition_arm:v0.1 |
查看启动日志
1 | docker logs face_recognition_arm |
删除
1 | docker stop face_recognition_arm |
镜像导出导入
格式
1 | # 保存镜像到一个tar包 |
示例
1 | # 导出tar包 |
查看架构
这里测试一下不通命令构建的架构是不是和基础镜像一致。
aarch64/ARM
Dockerfile_ARCH_ARM
1 | # Pull base image |
构建
1 | docker buildx build -f Dockerfile_ARCH_ARM --platform linux/arm64 -t psvmc/arch_arm:v0.1 . |
运行
1 | docker run --platform linux/arm64 psvmc/arch_arm:v0.1 |
X86_64/AMD
Dockerfile_ARCH_AMD
1 | # Pull base image |
构建
1 | docker buildx build -f Dockerfile_ARCH_AMD -t psvmc/arch_amd:v0.1 . |
运行
1 | docker run psvmc/arch_amd:v0.1 |