
该Docker镜像无需在开发机上安装Flutter和Android SDK,已包含所有就绪工具,包括Android 9 Pixel模拟器。通过shell别名可实现与本地安装无差异的使用体验,也可作为VSCode的devcontainer使用。
flutter(默认)flutter-android-emulatorflutter-web依赖项
运行flutter-android-emulator入口点时,主机需支持KVM并安装xhost。
在当前目录执行例如flutter help(附加参数将传递给容器中的flutter):
shelldocker run --rm -e UID=$(id -u) -e GID=$(id -g) --workdir /project -v "$PWD":/project matspfeiffer/flutter help
若未设置UID和GID,文件将归属于UID=1000和GID=1000。
可通过以下方式连接USB设备:
shelldocker run --rm -e UID=$(id -u) -e GID=$(id -g) --workdir /project -v "$PWD":/project --device=/dev/bus -v /dev/bus/usb:/dev/bus/usb matspfeiffer/flutter devices
为获得最佳性能,需挂载主机的X11目录、DRI和KVM设备以实现硬件加速:
shellxhost local:$USER && docker run --rm -ti -e UID=$(id -u) -e GID=$(id -g) -p 42000:42000 --workdir /project --device /dev/kvm --device /dev/dri:/dev/dri -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY -v "$PWD":/project --entrypoint flutter-android-emulator matspfeiffer/flutter
应用将在localhost:8090提供服务:
shelldocker run --rm -ti -e UID=$(id -u) -e GID=$(id -g) -p 42000:42000 -p 8090:8090 --workdir /project -v "$PWD":/project --entrypoint flutter-web matspfeiffer/flutter
该镜像可用于VSCode的devcontainer中开发,并启动Android模拟器或Web服务器。Android模拟器需要硬件加速,因此不同操作系统的最佳实践有所差异。
对于使用Linux的开发者,推荐此方法,因其整体更简洁。
在VSCode项目中添加.devcontainer/devcontainer.json:
json{ "name": "Flutter", "image": "matspfeiffer/flutter", "extensions": ["dart-code.dart-code", "dart-code.flutter"], "runArgs": [ "--device", "/dev/kvm", "--device", "/dev/dri:/dev/dri", "-v", "/tmp/.X11-unix:/tmp/.X11-unix", "-e", "DISPLAY" ] }
VSCode启动容器后,执行flutter emulators --launch flutter_emulator启动模拟器,之后即可选择该设备调试Flutter代码。
在VSCode项目中添加.devcontainer/devcontainer.json:
json{ "name": "Flutter", "image": "matspfeiffer/flutter", "extensions": ["dart-code.dart-code", "dart-code.flutter"] }
启动本地Android模拟器,然后重新连接并执行以下命令使设备通过网络可访问:
shelladb tcpip 5555
在Docker容器中连接设备:
shelladb connect host.docker.internal:5555
现在可选择该设备开始调试。
为什么不使用Alpine?
Alpine基于musl而非glibc。Flutter打包的Dart二进制文件链接到glibc,因此Flutter SDK与Alpine不兼容——虽可修复,但非本镜像的核心目标。
为什么使用OpenJDK 8?
更高版本中,Android工具的sdkmanager在获取Maven依赖时会抛出错误。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务