
您是否曾想在Docker容器中运行Microsoft Windows应用程序?本镜像正是为此设计。
开发此镜像的初衷是创建Windows安装包(即MSI),因此我将其用作https://registry.hub.docker.com/u/suchja/wix/%E7%9A%84%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E3%80%82%E5%BD%93%E7%84%B6%E5%AE%83%E8%BF%98%E6%9C%89%E8%AE%B8%E5%A4%9A%E5%85%B6%E4%BB%96%E7%94%A8%E9%80%94%EF%BC%8C%E5%A6%82%E6%9C%89%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E6%AC%A2%E8%BF%8E%E5%9C%A8https://registry.hub.docker.com/u/suchja/wine/%E7%95%99%E8%A8%80%E3%80%82
提示: 最近发布了1.8版本(新稳定版)。目前最新开发版(1.9.2)尚未在"Wine Team PPA"中提供,因此latest和dev标签的镜像均包含1.8版本。一旦有新开发版可用,将及时更新。
本镜像提供不同版本,可通过指定标签从Docker Hub拉取:
suchja/wine:latest - 基于debian:jessie基础镜像,提供Wine最新稳定版(当前为1.6.2)。尽管是最新稳定版,但已较旧(约2年),可能无法正常运行所有程序。此镜像还使用较旧版本的Wine Mono,因为新版本可能与旧Wine不兼容。Docker镜像大小:约445MBsuchja/wine:dev - 基于ubuntu:14.04,提供最新开发版之一(2015年12月24日发布的1.8版本)。Wine在Ubuntu上支持最佳,因此最新开发版对Ubuntu用户易于获取,但对Debian用户较困难。Docker镜像大小:约740MB如需最新bug修复或前沿版本,建议使用suchja/wine:dev;若无需前沿特性,suchja/wine:latest的稳定版已足够。
目前正在努力使稳定版和开发版基于同一Linux发行版。由于倾向于debian:jessie,正尝试为其获取最新Wine开发版,但获取签名包或从头构建Wine需要更多时间研究。
除父镜像包含的包外,本镜像还提供以下核心包:
我推崇"关注点分离(SoC)"原则,因此Dockerfile尽量单一职责。本镜像的基础镜像结构如下:
https://github.com/tianon/docker-brew-debian/blob/188b27233cedf32048ee***e8f8c6fc0fc0cb4/jessie/Dockerfile / https://github.com/tianon/docker-brew-ubuntu-core/blob/7fef77c821d7f806373c04675358ac6179eaeaf3/trusty/Dockerfile%EF%BC%88%E5%8F%96%E5%86%B3%E4%BA%8E%E6%89%80%E9%80%89%E6%A0%87%E7%AD%BE%EF%BC%89
https://registry.hub.docker.com/u/suchja/x11client/dockerfile/ - 在独立容器中显示X Window内容
https://registry.hub.docker.com/u/suchja/wine/dockerfile/ - 本镜像
首先需选择标签。以下示例默认使用稳定版suchja/wine:latest。
注意: Wine是多进程应用。每次运行wine命令时,会启动wineserver及其他非wine子进程。因此,若将此镜像作为基础镜像并在Dockerfile中使用RUN wine your-app.exe,将无法正常工作。因为Docker会在RUN命令返回后认为Wine已完成,但其他进程仍在运行,被Docker终止后通常会导致Wine前缀损坏。因此,要么交互式使用Wine,要么在每次调用后等待wineserver完成。可参考https://registry.hub.docker.com/u/suchja/wix/%E9%95%9C%E5%83%8F%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F%E3%80%82
若无需Wine的图形输出,可按以下方式启动容器:
bashdocker run --rm -it --entrypoint /bin/bash suchja/wine:latest
使用--entrypoint选项而非提供命令,可在Wine尝试输出窗口内容时在命令行显示相关信息,同时抑制基础镜像suchja/x11client的入口脚本执行。
这种情况下,可参考wineconsole和Wine的控制台用户界面,目前暂无使用经验,将后续测试。
suchja/x11server实现GUI若需图形输出,需先运行基于https://registry.hub.docker.com/u/suchja/x11server/%E7%9A%84%E5%AE%B9%E5%99%A8%EF%BC%9A
bashdocker run -d --name display -e VNC_PASSWORD=newPW -p 5900:5900 suchja/x11server
然后启动Wine容器:
bashdocker run --rm -it --link display:xserver --volumes-from display suchja/wine:latest /bin/bash
--link display:xserver和--volumes-from display选项仅在需通过https://registry.hub.docker.com/u/suchja/x11server/%E6%98%BE%E7%A4%BAWine%E5%9B%BE%E5%BD%A2%E8%BE%93%E5%87%BA%E6%97%B6%E9%9C%80%E8%A6%81%EF%BC%8C%E5%90%A6%E5%88%99%E5%8F%AF%E7%9C%81%E7%95%A5%E3%80%82%E8%8B%A5%E7%9C%81%E7%95%A5%EF%BC%8C%60wine%60%E4%BC%9A%E5%9B%A0%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA%E5%9B%BE%E5%BD%A2%E8%BE%93%E5%87%BA%E8%80%8C%E6%8F%90%E7%A4%BA%E8%AD%A6%E5%91%8A%E3%80%82
容器中未初始化Wine前缀,因此首次操作应执行:
bashwine wineboot --init
若未正确链接运行中的https://registry.hub.docker.com/u/suchja/x11server/%E5%AE%B9%E5%99%A8%EF%BC%8C%E4%BC%9A%E6%8F%90%E7%A4%BAX%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E8%BF%90%E8%A1%8C%E6%88%96$DISPLAY%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E8%AD%A6%E5%91%8A%E3%80%82%E8%8B%A5%E4%BB%85%E8%BF%90%E8%A1%8C%E6%8E%A7%E5%88%B6%E5%8F%B0%E5%BA%94%E7%94%A8%EF%BC%8C%E5%8F%AF%E5%BF%BD%E7%95%A5%E8%BF%99%E4%BA%9B%E8%AD%A6%E5%91%8A%E3%80%82
初始化后,Wine环境即准备就绪。
初始化前缀后,可验证版本:
bashwine --version
若GUI已配置,可启动记事本验证图形功能:
bashwine notepad.exe
此命令仅在已连接X服务器时有效。若需运行控制台应用,可将应用添加到容器(通过容器内命令行或挂载主机卷)。
运行记事本时可能出现窗口无标题栏(含关闭按钮)的问题,可通过模拟虚拟桌面解决。容器中包含winegui命令(wine的别名,附加参数),使用方式:
bashwinegui notepad.exe
另一种方法是通过winecfg修改"图形"配置(感谢dagelf在评论中指出):运行winecfg,切换到"图形"选项卡,取消勾选以下两项:
Wine支持多种环境变量,可通过docker run -e VARIABLE_NAME=VALUE启动容器时指定,或在容器内shell中通过export VARIABLE_NAME=VALUE设置。
WINEDEBUG
控制Wine调试输出,默认设为-all(无输出)。启动容器后可修改,例如:
bashexport WINEDEBUG=+all
此命令会输出所有组件的信息、警告和错误。详见Wine调试通道。
WINEDLLOVERRIDES
控制是否使用原生DLL或Wine内置DLL。常见用途是禁用wine-mono以运行原生.NET Framework,命令:
bashexport WINEDLLOVERRIDES=mscoree=d
详见Wine DLL覆盖。
WINEARCH
默认配置为运行32位Windows(WINEARCH=win32)。初始化前缀前可通过以下命令修改:
bashexport WINEARCH=''
详见WINEARCH说明。
WINEPREFIX
定义Wine存储Windows文件和配置的目录(前缀)。首次执行Wine命令时会自动创建和配置该目录。镜像中默认设为WINEPREFIX=/home/xclient/.wine。可创建多个前缀并通过此变量切换使用。
wine详见使用方法开头说明。
与https://registry.hub.docker.com/u/suchja/x11server/%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E6%97%B6%EF%BC%8C%E6%89%A7%E8%A1%8CWine%E5%91%BD%E4%BB%A4%EF%BC%88%E5%A4%9A%E5%9C%A8%E9%A6%96%E6%AC%A1%60wine wineboot --init`后)可能出现以下错误:
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 130 (MIT-SHM) Minor opcode of failed request: 3 (X_ShmPutImage) Value in failed request: 0x140 Serial number of failed request: 213 Current serial number in output stream: 219
尚未确定确切原因,推测与远程X服务器相关。据观察无实际影响,欢迎X Window或Wine专家提供解决思路。
本镜像无固定维护计划。Wine发布新稳定版时可能会更新镜像。
若使用中遇到问题,可在https://github.com/suchja/wine%E6%8F%90%E4%BA%A4issue%EF%BC%8C%E6%88%91%E4%BC%9A%E5%B0%BD%E5%BF%AB%E5%A4%84%E7%90%86%E3%80%82
用于构建本Docker镜像的https://github.com/suchja/wine%E6%BA%90%E7%A0%81%E6%97%A0%E7%89%88%E6%9D%83%E9%99%90%E5%88%B6%EF%BC%88%E8%A7%81LICENSE.md%EF%BC%89%EF%BC%8C%E6%82%A8%E5%8F%AF%E8%87%AA%E7%94%B1%E4%BD%BF%E7%94%A8%E8%BF%99%E4%BA%9B%E6%BA%90%E7%A0%81%EF%BC%88%E5%A6%82Dockerfile%E5%92%8CREADME.md%EF%BC%89%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务