Linux 및 MacOS에서 Windows 응용 프로그램을 실행하기위한 와인 및 포로크가 포함 된 Docker 이미지
Docker-Wine 컨테이너는 사용 사례에 맞게 X11 전달 또는 RDP 서버로 실행할 수 있습니다. 기본값은 시스템의 X 서버를 사용하여 현재 세션에 그래픽을 직접 렌더링하고 Pulseaudio (Linux의 오디오 리디렉션)를 통해 사운드를 재생하는 X11 전달을 사용하는 것입니다.
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 또는 관련 인수와 함께 기타 유효한 명령을 추가하여 기본 대화 형 bash 세션을 무시할 수 있습니다.
./docker-wine wine notepaddocker-wine 실행하십시오프레임 버퍼 디스플레이를 시작하여 : XVFB : 95- 스크린 0 320X200X8 내보내기 서버 번호 : 95에 표시됩니다.
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wine 메모와 함께 실행하십시오 ./docker-wine --nottydocker-wine 실행하십시오 --rdp 옵션으로 실행하여 대화식 bash 세션으로 RDP 서버를 시작하십시오.
./docker-wine --rdp또는 컨테이너를 백그라운드에서 실행되는 분리 된 데몬으로 실행할 수 있습니다. 데몬을 시작하려면 :
./docker-wine --rdp=start그런 다음 데몬을 멈추기 위해 :
./docker-wine --rdp=stop모든 Windows 데스크톱 및 서버에는 원격 데스크톱 연결 클라이언트가 사전 설치되어 있으며 MacOS 사용자는 App Store에서 무료로 Microsoft 원격 데스크톱 응용 프로그램을 다운로드 할 수 있습니다. 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" 사용하여 기본 비밀번호를 무시할 수 있지만 컨테이너로 전달하기 전에이 비밀번호가 암호화 되더라도 암호는 동일한 호스트 시스템에 연결된 다른 사용자의 프로세스 목록에 일반 텍스트로 표시됩니다. 사용 사례에 따라 문제가 될 수 있습니다.
한 가지 솔루션은 --password-prompt 사용하고 Docker-Wine 컨테이너를 인스턴스화 할 때 사용자 비밀번호를 입력하라는 메시지가 표시됩니다. 이렇게하면 컴퓨터의 프로세스 목록에 암호가 나타나지 않지만 매번 비밀번호를 수동으로 입력해야합니다.
프롬프트가 바람직하지 않은 경우, 솔루션은 암호를 openssl 사용하여 docker-wine 스크립트로 전달하기 전에 암호를 암호화하는 것입니다. 이 명령은 임의의 소금으로 비밀번호의 MD5 암호화 해시를 생성합니다. 즉, 각 실행은 다른 해시를 생성합니다.
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
이 보안 문자열을 사용하는 한 가지 방법은 디스크에 저장하는 것입니다.
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 notepad Docker-Wine 컨테이너가 docker-wine 스크립트와 인스턴스화되면 winehome 이라는 볼륨 컨테이너가 생성되어 컨테이너 내의 사용자의 집에 매핑됩니다. 볼륨 컨테이너를 사용하면 winehome 볼륨이 제거되지 않는 한 사용자 데이터가 지속되므로 모든 실행 후 Docker-Wine 컨테이너를 안전하게 제거 할 수 있습니다. 이를 통해 docker-wine 이미지를 언제라도 최신 버전으로 교체 할 수 있습니다.
실행하여 winehome 볼륨 컨테이너를 수동으로 만들 수 있습니다.
docker volume create winehome볼륨 컨테이너를 원하지 않으면 다음을 사용하여 삭제할 수 있습니다.
docker volume rm winehome scottyhardy/docker-wine 다른 Docker 이미지의 기반으로 사용하려는 경우 X11 전달 및 RDP 서버 모드가 계속 작동하도록 동일한 ENTRYPOINT 설정해야합니다.
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker run 명령으로 수동으로 실행됩니다Linux에서 Pulseaudio 리디렉션을 수행하고 MacOS에서 X11 리디렉션을 수행하는 데 많은 전제 조건이 있습니다. 나는 가까운 시일 내에 위키에서 이것을 문서화 할 계획이지만 이것은 당신을 시작하기에 충분할 것입니다.
먼저 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 다음은 대화식 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