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

posted @ 2025-12-11 23:17  scales123  阅读(31)  评论(0)    收藏  举报