Изображение Docker, которое включает вино и Winetricks для запуска приложений Windows на Linux и MacOS
Контейнер Docker-Wine можно запускать с помощью x11 пересылки или в качестве сервера RDP в соответствии с вашим вашим вариантом использования. По умолчанию - использование X11 пересылка, которая использует X11 для отображения графики непосредственно в ваш текущий сеанс и воспроизводить звуки через PulseAudio (перенаправление звука только на Linux).
Использование Docker-Wine с RDP-сервером позволяет запускать контейнер на машине без головы или на машине, которая может не запускать X-сервер. Затем вы можете использовать удаленный настольный клиент для подключения к контейнеру, который может быть расположен либо на вашем локальном, либо на удаленной машине. В настоящее время это единственное решение, если вам требуется звук на macOS.
Использование сценария docker-wine -самый простой способ начать работу и должно быть всем, что вам нужно для Linux и MacOS.
docker-wineНа Linux:
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wineНа macOS:
curl -O https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-winedocker-wine с помощью X11Запуск сценария без других аргументов начнет интерактивный сеанс Bash:
./docker-wine Вы можете переопределить интерактивную сеанс BASH по умолчанию, добавив wine , winetricks , winecfg или любые другие действующие команды с соответствующими аргументами:
./docker-wine wine notepaddocker-wine с XVFBЗапускает фронтальный буфер. Отображение Delaulting на: XVFB: 95 -Screen 0 320x200x8 Экспорты отображения на номер сервера: 95
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wine прикрепленный с Notty ./docker-wine --nottydocker-wine с RDP-сервером Запустите с параметром --rdp , чтобы запустить сервер RDP с интерактивным сеансом Bash:
./docker-wine --rdpИли вы можете запустить контейнер как отдельный демон, который работает на заднем плане. Чтобы начать демон:
./docker-wine --rdp=startЗатем остановить демон:
./docker-wine --rdp=stopВсе настольные компьютеры и серверы Windows поставляются с предварительно установленным клиентом удаленного настольного подключения, а пользователи MacOS могут бесплатно скачать приложение Microsoft Remote Desktop бесплатно из App Store. Для пользователей Linux я бы посоветовал использовать клиент Remmina Remote Desktop.
Для имени хоста используйте 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" , но даже если этот пароль зашифруется перед передачей его в контейнер, ваш пароль все еще появляется в простом тексте в списке процессов для любого другого пользователя, подключенного к одному хост -машину. В зависимости от вашего варианта использования это может быть проблемой.
Одним из решений является использование --password-prompt и будет предложено ввести пароль пользователя при создании контейнера Docker-Wine. Это не позволит вашему паролю появиться в списке процессов вашей машины, но каждый раз требует вручную вручную в пароль.
Если подсказка нежелательно, решение состоит в том, чтобы зашифровать ваш пароль, прежде чем передавать его в скрипт docker-wine , используя openssl . Эта команда будет создавать зашифрованный хэш MD5 вашего пароля со случайной солью, что означает, что каждый запуск будет создавать свой хеш:
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
Одним из методов использования этой безопасной строки было бы хранить ее на диск:
echo $( openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password " ) > ~ /.docker-wine Затем просто cat файл при использовании сценария docker-wine :
./docker-wine --rdp --as-me --secure-password= " $( cat ~ /.docker-wine ) " Во -первых, клонировать репозиторий от GitHub:
git clone https://github.com/scottyhardy/docker-wine.git
cd docker-wineЧтобы построить контейнер, просто запустите:
./build Чтобы запустить контейнер с локально встроенным, используйте docker-wine с помощью --local переключателем:
./docker-wine --local wine notepad Когда контейнер Docker-Wine создается сценарием docker-wine , создается контейнер с объемом с именем winehome и отображается с домом пользователя в контейнере. Использование контейнера громкости позволяет безопасному удалению контейнера Docker-Wine после каждого выполнения, поскольку пользовательские данные сохранятся до тех пор, пока объем winehome не будет удален. Это эффективно позволяет заменять изображение docker-wine в любое время.
Вы можете вручную создать контейнер winehome , работая:
docker volume create winehomeЕсли вам не нужен контейнер с громкости, вы можете удалить его, используя:
docker volume rm winehome Если вы планируете использовать scottyhardy/docker-wine в качестве базы для другого изображения Docker, вам следует настроить ту же ENTRYPOINT , чтобы включить режимы пересылки X11 и RDP-сервера для продолжения работы:
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker runСуществует ряд предпосылок для перенаправления Pulseaudio, работающего над Linux и для перенаправления X11 для работы на macOS. Я планирую документировать их в вики в ближайшем будущем, но этого должно быть достаточно, чтобы начать вас.
Во -первых, вытащите последнее изображение от Dockerhub:
docker pull scottyhardy/docker-wine Вот базовая команда docker run для перенаправления x11 на Linux, которая запустит интерактивный сеанс Bash:
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 Вот базовая команда docker run для запуска RDP -сервера как на MacOS, так и Linux с интерактивным сеансом Bash:
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