Windows11制作docker linux-arm64镜像
通过win11构建支持linux-arm/x86的docker镜像
1 前置条件
1.1 启用wsl
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启后,再次以管理员身份打开 PowerShell,设置WSL2为默认版本
wsl --set-default-version 2
1.2 安装linux
在微软应用商店搜索Ubuntu 22.04并进行安装
安装后需要设置用户和密码
1.3 安装docker desktop
下载安装包直接安装,确认勾选use wsl2
安装后配置镜像源,通过 Docker Desktop 界面配置
打开 Docker Desktop
点击右上角的设置图标(⚙️)
在左侧菜单中选择 “Docker Engine”
在右侧 JSON 配置中添加或修改 registry-mirrors 配置:
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com",
"https://mirrors.aliyun.com"
]
}
查看配置的镜像源:
docker info | grep -A 5 "Registry Mirrors"
1.4 验证是否安装成功
在wsl的Ubuntu子系统中和cmd命令行中执行以下命令:
docker --version
如果cmd中正常返回版本号,但是Ubuntu中没有,可尝试以下操作:
可以在docker的settings-resources中检查是否勾选集成wsl2
在Ubuntu中添加docker的环境变量:
echo "export DOCKER_HOST='unix:///var/run/docker.sock'" >> ~/.bashrc
source ~/.bashrc
2 准备配置文件
- Dockfile(最终未通过Dockefile构建)
- 按需python依赖包requirements.txt
# 3 启用 Docker 跨平台构建支持
```shell
sudo apt update
# 1安装 QEMU
sudo apt install -y qemu-user-static binfmt-support
# 注册 QEMU 到 Docker
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# 配置buildX
docker buildx version
# 创建构建器、
docker buildx create --name multi-arch-builder --use
# 验证构建器
```shell
docker buildx inspect --bootstrap
使用新创建好的builder实例
docker buildx use mybuilder
删除构建器
docker buildx rm mybuilder 2>/dev/null || true
3 构建并推送双架构镜像
登陆仓库
## 3.1 输入 Docker Hub 用户名和密码登录
```shell
docker login
3.2 通过Dockfile构建
在 Dockerfile 和 requirements.txt 所在目录,执行以下命令:
# 格式:docker buildx build --platform 架构列表 -t 仓库用户名/镜像名:标签 --push .
docker buildx build \
--platform linux/amd64,linux/arm64 \ # 同时构建 x86_64 和 ARM64
-t your-docker-username/universal-ml:v1 \ # 替换为你的仓库用户名+镜像名
--push .
docker buildx build
--platform linux/amd64,linux/arm64
-t scales23/repo:enrich_python
--push .
3.3 通过容器构建
- 根据镜像如python:3.11-slim启动容器
- 容器启动后安装基础系统依赖
- 根据requirements.txt安装配python依赖
- 配置ssh以及jupyter lab
- 验证是否安装成功
- 将容器commit并docker save -o打包为tar镜像包
参考
https://docs.docker.top/build/builders/drivers/docker-container/index.htm#qemu
https://learn.microsoft.com/zh-cn/windows/wsl/tutorials
https://www.ningto.com/blog/2025/wsl2-docker-tutorial-for-beginners
https://juejin.cn/post/7447147253507375104
https://zachthinking.github.io/posts/docker-desktop-mirror/
https://blog.csdn.net/qq_45737042/article/details/119962564

浙公网安备 33010602011771号