LinuxとMacOSでWindowsアプリケーションを実行するためのワインとWinetricksを含むDocker画像
Docker-Wineコンテナは、X11転送で実行するか、ユースケースに合わせてRDPサーバーとして実行できます。デフォルトは、マシンのXサーバーを利用してグラフィックを現在のセッションに直接レンダリングし、Pulseaudioを介してサウンドを再生するX11転送を使用することです(Linuxのみのオーディオリダイレクト)。
RDPサーバーを使用してDocker-Wineを使用すると、コンテナをヘッドレスマシンまたはXサーバーを実行していない可能性のあるマシンで実行できます。その後、リモートデスクトップクライアントを使用して、ローカルマシンまたはリモートマシンのいずれかに配置できるコンテナに接続できます。これは現在、MacOSに音が必要な場合の唯一のソリューションです。
docker-wineスクリプトを使用することは、LinuxとMacOSに必要なすべてである必要があります。
docker-wineスクリプトをダウンロードしますLinuxで:
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wineMacOSについて:
curl -O https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-winedocker-wineを実行します他の引数なしでスクリプトを実行すると、インタラクティブなバッシュセッションが開始されます。
./docker-wine wine 、 winetricks 、 winecfg 、または関連する議論を備えたその他の有効なコマンドを追加することにより、デフォルトのインタラクティブバッシュセッションをオーバーライドできます。
./docker-wine wine notepaddocker-wineを実行しますデフォルトのフレームバッファディスプレイを起動します:xvfb:95 -screen 0 320x200x8エクスポートサーバー番号:95
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wineを実行します./docker-wine --nottydocker-wineを実行します--rdpオプションを使用して実行して、インタラクティブバッシュセッションでRDPサーバーを起動します。
./docker-wine --rdpまたは、バックグラウンドで動作する剥離したデーモンとしてコンテナを実行することができます。デーモンを始めるには:
./docker-wine --rdp=start次に、デーモンを止めるために:
./docker-wine --rdp=stopすべてのWindowsデスクトップとサーバーには、リモートデスクトップ接続クライアントが事前にインストールされ、MacOSユーザーがMicrosoftリモートデスクトップアプリケーションをApp Storeから無料でダウンロードできます。 Linuxユーザーの場合、Remminaリモートデスクトップクライアントを使用することをお勧めします。
ホスト名の場合は、リモートデスクトップクライアントを実行しているのと同じマシンでコンテナがホストされている場合はlocalhost使用し、リモート接続には接続しているマシンの名前またはIPアドレスを使用してください。注:リモートマシンに接続するには、TCPポート3389をファイアウォールから露出する必要があります。
ログインするには、次のデフォルトのユーザーアカウントの詳細を使用します。
Username: wineuser
Password: wineuserdocker-wineを実行するときの追加オプションコンテナをルートとして起動します:
./docker-wine --as-rootまたは、同じユーザー名、UID、GID、ホームパス(特にローカルファイルシステムにバインディングする場合に役立つ)でコンテナを自分自身として起動します。
./docker-wine --as-meオプションを組み合わせることができます。
./docker-wine --as-root --rdpまた、標準のDocker構文を使用して、必要なだけ多くの環境変数、デバイス、ボリュームを追加することもできます。
./docker-wine --env= " MY_ENV_VAR=some_value " --device=/dev/snd --volume= " myvol:/some/path:ro " --volume= " /usr/data:data "オプションの完全なリストについては、 docker-wineヘルプを参照してください。
./docker-wine --helpデフォルトのパスワードはwineuserであり、 --as-me引数を使用すると、デフォルトで自分のユーザー名に変更されます。 --password="your_password"を使用してデフォルトのパスワードをオーバーライドできますが、このパスワードはコンテナに渡す前に暗号化されていますが、同じホストマシンに接続された他のユーザーのプロセスリストのプレーンテキストにパスワードが表示されます。ユースケースに応じて、これは問題になる可能性があります。
1つのソリューションは、docker-wineコンテナをインスタンス化するときに、 --password-promptを使用し、ユーザーパスワードを入力するように求められます。これにより、パスワードがマシンのプロセスリストに表示されなくなりますが、毎回パスワードを手動で入力する必要があります。
プロンプトが望ましくない場合、ソリューションは、 opensslを使用して、パスワードをdocker-wineスクリプトに渡す前にパスワードを暗号化することです。このコマンドは、パスワードのMD5暗号化されたハッシュをランダムソルトで生成します。これは、各実行が異なるハッシュを生成することを意味します。
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
この安全な文字列を使用する1つの方法は、それをディスクに保存することです。
echo $( openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password " ) > ~ /.docker-wine次に、 docker-wineスクリプトを使用するときにファイルcat 。
./docker-wine --rdp --as-me --secure-password= " $( cat ~ /.docker-wine ) " まず、GitHubからリポジトリをクローンします。
git clone https://github.com/scottyhardy/docker-wine.git
cd docker-wineコンテナを構築するには、単純に実行します。
./buildローカルに構築されたコンテナを実行するには、 --localスイッチを使用してdocker-wineを使用します。
./docker-wine --local wine notepadDocker-Wineコンテナがdocker-wineスクリプトにインスタンス化されると、 winehomeという名前のボリュームコンテナが作成され、コンテナ内のユーザーの家にマッピングされます。ボリュームコンテナを使用すると、 winehomeボリュームが削除されない限り、ユーザーデータが持続するため、実行するたびにDocker-Wineコンテナを安全に削除できます。これにより、 docker-wine画像をいつでも新しいバージョンに交換できます。
実行して、 winehomeボリュームコンテナを手動で作成できます。
docker volume create winehomeボリュームコンテナが必要ない場合は、以下を使用して削除できます。
docker volume rm winehomescottyhardy/docker-wine別のDocker画像のベースとして使用する場合は、X11転送とRDPサーバーモードが操作を継続できるように同じENTRYPOINTを設定する必要があります。
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker runコマンドで手動で実行しますPulseaudioのリダイレクトをLinuxで動作させ、X11リダイレクトをMacOSで動作させるための多くの前提条件があります。近い将来、これらをWikiで文書化する予定ですが、これで開始するのに十分なはずです。
まず、DockerHubから最新の画像を引き出します。
docker pull scottyhardy/docker-wineこれは、インタラクティブバッシュセッションを開始するLinuxのX11リダイレクトの基本的なdocker runコマンドです。
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インタラクティブバッシュセッションで、MacOSとLinuxの両方でRDPサーバーを起動するための基本的なdocker runコマンドを次に示します。
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " RDP_SERVER=yes "
--publish= " 3389:3389/tcp "
scottyhardy/docker-wine /bin/bashビデオをテストするには、メモ帳を開いてみてください。
./docker-wine wine notepadサウンドをテストするには、 pacatを使用してみてください。
./docker-wine pacat -vv /dev/urandom