Gambar Docker yang mencakup anggur dan winetricks untuk menjalankan aplikasi Windows di Linux dan MacOS
Wadah Docker-Wine dapat dijalankan dengan penerusan X11 atau sebagai server RDP yang sesuai dengan kasus penggunaan Anda. Standarnya adalah menggunakan penerusan X11 yang menggunakan server X mesin Anda untuk membuat grafik langsung ke sesi Anda saat ini dan memutar suara melalui pulseaudio (pengalihan audio hanya di Linux).
Menggunakan Docker-Wine dengan server RDP memungkinkan wadah dijalankan pada mesin tanpa kepala atau mesin yang mungkin tidak menjalankan server X. Anda kemudian dapat menggunakan klien desktop jarak jauh untuk terhubung ke wadah yang mungkin terletak di mesin lokal atau jarak jauh Anda. Saat ini satu -satunya solusi jika Anda memerlukan suara di macOS.
Menggunakan skrip docker-wine adalah cara termudah untuk memulai dan harus menjadi yang Anda butuhkan untuk Linux dan MacOS.
docker-wineDi Linux:
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wineDi macOS:
curl -O https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-winedocker-wine dengan Penerusan X11Menjalankan skrip tanpa argumen lain akan memulai sesi bash interaktif:
./docker-wine Anda dapat mengganti sesi bash interaktif default dengan menambahkan wine , winetricks , winecfg atau perintah yang valid lainnya dengan argumen terkait mereka:
./docker-wine wine notepaddocker-wine dengan XVFBMulai Display Buffer Frame Default ke: XVFB: 95 -Screen 0 320x200x8 Ekspor Tampilan ke Nomor Server: 95
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wine terpasang dengan Notty ./docker-wine --nottydocker-wine dengan server RDP Jalankan dengan opsinya --rdp untuk memulai server RDP dengan sesi bash interaktif:
./docker-wine --rdpAtau, Anda dapat menjalankan wadah sebagai daemon terpisah yang berjalan di latar belakang. Untuk memulai daemon:
./docker-wine --rdp=startKemudian untuk menghentikan daemon:
./docker-wine --rdp=stopSemua desktop dan server Windows hadir dengan klien koneksi desktop jarak jauh yang sudah diinstal sebelumnya dan pengguna MacOS dapat mengunduh aplikasi Microsoft Remote Desktop secara gratis dari App Store. Untuk pengguna Linux, saya sarankan menggunakan Klien Desktop Remote Remmina.
Untuk nama host, gunakan localhost jika wadah di -host pada mesin yang sama dengan Anda menjalankan klien desktop jarak jauh Anda dan untuk koneksi jarak jauh, cukup gunakan nama atau alamat IP mesin yang Anda sambungkan. Catatan: Untuk terhubung ke mesin jarak jauh, itu akan membutuhkan port TCP 3389 untuk diekspos melalui firewall.
Untuk masuk, gunakan detail akun pengguna default berikut:
Username: wineuser
Password: wineuserdocker-wineMulai wadah sebagai root:
./docker-wine --as-rootAtau mulai wadah seperti diri Anda dengan nama pengguna yang sama, UID, GID dan jalur rumah (terutama berguna saat mengikat ke sistem file lokal):
./docker-wine --as-meAnda dapat menggabungkan opsi:
./docker-wine --as-root --rdpAnda juga dapat menggunakan sintaks Docker standar untuk menambahkan sebanyak mungkin variabel lingkungan tambahan, perangkat, dan volume yang Anda butuhkan:
./docker-wine --env= " MY_ENV_VAR=some_value " --device=/dev/snd --volume= " myvol:/some/path:ro " --volume= " /usr/data:data " Lihat Bantuan docker-wine untuk daftar lengkap opsi:
./docker-wine --help Kata sandi default adalah wineuser dan itu akan berubah menjadi nama pengguna Anda sendiri secara default jika Anda menggunakan argumen --as-me . Anda dapat mengganti kata sandi default dengan menggunakan --password="your_password" tetapi meskipun kata sandi ini dienkripsi sebelum meneruskannya ke wadah, kata sandi Anda masih muncul dalam teks biasa dalam daftar proses untuk pengguna lain yang terhubung ke mesin host yang sama. Bergantung pada kasus penggunaan Anda, ini bisa menjadi masalah.
Salah satu solusi adalah menggunakan --password-prompt dan diminta untuk memasukkan kata sandi pengguna saat Anda instantiate wadah Docker-Wine. Ini akan mencegah kata sandi Anda muncul di daftar proses mesin Anda, tetapi memang perlu secara manual memasukkan kata sandi setiap kali.
Jika diminta tidak diinginkan, solusinya adalah mengenkripsi kata sandi Anda sebelum meneruskannya ke skrip docker-wine , menggunakan openssl . Perintah ini akan menghasilkan hash yang dienkripsi MD5 dari kata sandi Anda dengan garam acak yang berarti setiap proses akan menghasilkan hash yang berbeda:
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
Salah satu metode menggunakan string aman ini adalah menyimpannya ke disk:
echo $( openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password " ) > ~ /.docker-wine Lalu cukup cat file saat menggunakan skrip docker-wine :
./docker-wine --rdp --as-me --secure-password= " $( cat ~ /.docker-wine ) " Pertama, klon repositori dari github:
git clone https://github.com/scottyhardy/docker-wine.git
cd docker-wineUntuk membangun wadah, cukup jalankan:
./build Untuk menjalankan wadah yang dibangun secara lokal, gunakan docker-wine dengan sakelar --local :
./docker-wine --local wine notepad Ketika wadah Docker-Wine dipakai dengan skrip docker-wine , wadah volume bernama winehome dibuat dan dipetakan ke rumah pengguna di dalam wadah. Menggunakan wadah volume memungkinkan wadah Docker-Wine untuk dihapus dengan aman setelah setiap eksekusi karena data pengguna akan bertahan selama volume winehome tidak dihapus. Ini secara efektif memungkinkan gambar docker-wine ditukar untuk versi yang lebih baru kapan saja.
Anda dapat secara manual membuat wadah volume winehome dengan menjalankan:
docker volume create winehomeJika Anda tidak ingin wadah volume, Anda dapat menghapusnya dengan menggunakan:
docker volume rm winehome Jika Anda berencana untuk menggunakan scottyhardy/docker-wine sebagai basis untuk gambar Docker lain, Anda harus mengatur ENTRYPOINT yang sama untuk mengaktifkan mode Penerusan X11 dan RDP Server untuk terus beroperasi:
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker runAda sejumlah prasyarat untuk mendapatkan pengalihan pulseaudio bekerja di Linux dan untuk pengalihan X11 untuk bekerja pada macOS. Saya berencana untuk mendokumentasikan ini dalam wiki dalam waktu dekat tetapi ini seharusnya cukup untuk memulai.
Pertama, tarik gambar terbaru dari Dockerhub:
docker pull scottyhardy/docker-wine Berikut adalah perintah docker run dasar untuk pengalihan X11 di Linux yang akan memulai sesi bash interaktif:
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 Berikut adalah perintah docker run Basic untuk memulai server RDP pada MacOS dan Linux dengan sesi bash interaktif:
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " RDP_SERVER=yes "
--publish= " 3389:3389/tcp "
scottyhardy/docker-wine /bin/bashUntuk menguji video, coba buka notepad:
./docker-wine wine notepad Untuk menguji suara, coba gunakan pacat :
./docker-wine pacat -vv /dev/urandom