Docker -Bild, das Wein und Winetricks zum Ausführen von Windows -Anwendungen unter Linux und MacOS enthält
Der Docker-Wine-Container kann entweder mit X11-Weiterleitung oder als RDP-Server ausgeführt werden, um Ihren Anwendungsfall zu entsprechen. Die Standardeinstellung besteht darin, die X11 -Weiterleitung zu verwenden, die den X -Server Ihres Geräts verwendet, um Grafiken direkt in Ihre aktuelle Sitzung zu rendern und Sounds über PulseAudio abzuspielen (nur Audioumleitung auf Linux).
Durch die Verwendung von Docker-Wine mit einem RDP-Server kann der Container auf einem Kopfmaschine oder einer Maschine ausgeführt werden, auf der möglicherweise kein X-Server ausgeführt wird. Sie können dann einen Remote -Desktop -Client verwenden, um eine Verbindung zum Container herzustellen, die sich möglicherweise entweder auf Ihrem lokalen oder einem Remote -Computer befindet. Dies ist derzeit die einzige Lösung, wenn Sie einen Ton auf macOS benötigen.
Die Verwendung des docker-wine -Skripts ist der einfachste Weg, um loszulegen, und sollte alles sein, was Sie für Linux und MacOS benötigen.
docker-wine -Skript herunterUnter Linux:
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wineAuf macos:
curl -O https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-winedocker-wine mit X11 weiterDas Ausführen des Skripts ohne andere Argumente startet eine interaktive Bash -Sitzung:
./docker-wine Sie können die standardmäßige interaktive Bash -Sitzung überschreiben, indem Sie wine , winetricks , winecfg oder andere gültige Befehle mit ihren zugehörigen Argumenten hinzufügen:
./docker-wine wine notepaddocker-wine mit XVFB ausStarten Sie eine Rahmenpufferanzeige, die defasiert auf: xvfb: 95 -Bildschirm 0 320x200x8 Exporte Anzeige an die Servernummer: 95
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wine mit Noty an ./docker-wine --nottydocker-wine mit RDP-Server aus Ausführen mit der Option --rdp , um den RDP -Server mit einer interaktiven Bash -Sitzung zu starten:
./docker-wine --rdpOder Sie können den Behälter als abgelöster Daemon ausführen, der im Hintergrund läuft. Um den Daemon zu beginnen:
./docker-wine --rdp=startDann, um den Daemon zu stoppen:
./docker-wine --rdp=stopAlle Windows-Desktops und Server werden mit dem Client der Remote Desktop Connection-Client vorinstalliert und MacOS-Benutzer können die Microsoft Remote-Desktop-Anwendung kostenlos im App Store herunterladen. Für Linux -Benutzer würde ich vorschlagen, den Remmina Remote -Desktop -Client zu verwenden.
Verwenden Sie für den Hostnamen localhost , wenn der Container auf demselben Computer gehostet wird, in dem Sie Ihren Remote -Desktop -Client einführen, und für Remoteverbindungen verwenden Sie einfach den Namen oder die IP -Adresse des Computers, mit dem Sie eine Verbindung herstellen. Hinweis: Um eine Verbindung zu einem Remote -Computer herzustellen, muss der TCP -Port 3389 über die Firewall freigelegt werden.
Verwenden Sie zum Anmelden die folgenden Standard -Benutzerkonto -Details:
Username: wineuser
Password: wineuserdocker-wineStarten Sie den Container als Wurzel:
./docker-wine --as-rootOder starten Sie den Container als Sie selbst mit demselben Benutzernamen, UID, GID und Heimweg (besonders nützlich, wenn Sie an das lokale Dateisystem binden):
./docker-wine --as-meSie können Optionen kombinieren:
./docker-wine --as-root --rdpSie können auch die Standard -Docker -Syntax verwenden, um so viele zusätzliche Umgebungsvariablen, Geräte und Volumes hinzuzufügen, wie Sie benötigen:
./docker-wine --env= " MY_ENV_VAR=some_value " --device=/dev/snd --volume= " myvol:/some/path:ro " --volume= " /usr/data:data " Eine vollständige Liste der Optionen finden Sie in der Helfer docker-wine :
./docker-wine --help Das Standardkennwort ist wineuser und wechselt standardmäßig in Ihren eigenen Benutzernamen, wenn Sie das --as-me -Argument verwenden. Sie können das Standardkennwort überschreiben, indem Sie --password="your_password" verwenden, obwohl dieses Kennwort vor dem Übergeben an den Container verschlüsselt wird, wird Ihr Passwort in der Prozessliste für jeden anderen Benutzer, der mit demselben Host -Computer verbunden ist, weiterhin in der Prozessliste angezeigt. Abhängig von Ihrem Anwendungsfall könnte dies ein Problem sein.
Eine Lösung ist die Verwendung --password-prompt und werden aufgefordert, das Benutzerkennwort einzugeben, wenn Sie den Docker-Wine-Container instanziieren. Dadurch wird verhindern, dass Ihr Passwort in der Prozessliste Ihres Computers angezeigt wird, erfordert jedoch jedes Mal manuell, das Passwort manuell einzugeben.
Wenn die Aufforderung unerwünscht ist, besteht die Lösung darin, Ihr Passwort zu verschlüsseln, bevor es an das docker-wine -Skript mit openssl weitergegeben wird. Dieser Befehl erzeugt einen verschlüsselten MD5 -Hash Ihres Passworts mit einem zufälligen Salz, was bedeutet, dass jeder Lauf einen anderen Hash erzeugt:
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
Eine Methode zur Verwendung dieser sicheren Zeichenfolge besteht darin, sie auf Festplatten zu speichern:
echo $( openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password " ) > ~ /.docker-wine Dann einfach die Datei bei der Verwendung des Skripts docker-wine Skript cat :
./docker-wine --rdp --as-me --secure-password= " $( cat ~ /.docker-wine ) " Klonen Sie zunächst das Repository von GitHub:
git clone https://github.com/scottyhardy/docker-wine.git
cd docker-wineUm den Container zu bauen, rennen Sie einfach:
./build Verwenden Sie docker-wine mit dem --local Schalter: Um den lokal gebauten Container auszuführen:
./docker-wine --local wine notepad Wenn der Docker-Wine-Container mit dem docker-wine -Skript instanziiert wird, wird ein Volumenbehälter namens winehome erstellt und dem Haus des Benutzers im Container zugeordnet. Durch die Verwendung eines Volumenbehälters kann der Docker-Wine-Container nach jeder Ausführung sicher entfernt werden, da die Benutzerdaten bestehen bleiben, solange das winehome Volumen nicht entfernt wird. Dadurch kann das docker-wine -Bild jederzeit gegen eine neuere Version ausgetauscht werden.
Sie können den winehome Volume Container manuell erstellen, indem Sie ausgeführt werden:
docker volume create winehomeWenn Sie den Volumenbehälter nicht möchten, können Sie ihn durch verwenden:
docker volume rm winehome Wenn Sie scottyhardy/docker-wine als Basis für ein anderes Docker-Image verwenden möchten, sollten Sie denselben ENTRYPOINT einrichten, um X11-Weiterleitung und RDP-Servermodi zu aktivieren, um weiter zu operieren:
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker run -Befehlen laufenEs gibt eine Reihe von Voraussetzungen, um die Umleitung von Pulseaudio unter Linux zu bearbeiten und die X11 -Umleitung an MacOS zu arbeiten. Ich habe vor, diese in naher Zukunft in einem Wiki zu dokumentieren, aber dies sollte ausreichen, um Ihnen den Einstieg zu erleichtern.
Ziehen Sie zunächst das neueste Bild von DockerHub:
docker pull scottyhardy/docker-wine Hier ist ein grundlegender docker run -Befehl für die X11 -Umleitung unter Linux, der eine interaktive Bash -Sitzung startet:
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " DISPLAY "
--volume= " ${XAUTHORITY :- ${HOME} / .Xauthority} :/root/.Xauthority:ro "
--volume= " /tmp/.X11-unix:/tmp/.X11-unix:ro "
scottyhardy/docker-wine /bin/bash Hier ist ein grundlegender Befehl docker run für den Start des RDP -Servers auf macOS und Linux mit einer interaktiven Bash -Sitzung:
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " RDP_SERVER=yes "
--publish= " 3389:3389/tcp "
scottyhardy/docker-wine /bin/bashUm Video zu testen, versuchen Sie, Notizblock zu öffnen:
./docker-wine wine notepad Versuchen Sie es mit pacat zu verwenden, um Sound zu testen:
./docker-wine pacat -vv /dev/urandom