Jalankan VM MacOS di Docker pada Windows & Linux dengan Docker-OSX

· 7 min read
Jalankan VM MacOS di Docker pada Windows & Linux dengan Docker-OSX
Photo by Jonathan Kemper / Unsplash

Biasanya kontainer buruh pelabuhan dapat diakses menggunakan proses CLI tanpa antarmuka grafis sama sekali. Tahukah Anda bahwa aplikasi grafis seperti Firefox, chrome dll dapat dijalankan di buruh pelabuhan menggunakan OS X?

Docker-OSX adalah proyek yang menyederhanakan instalasi macOS menggunakan container Docker di OSX-KVM. Ini memungkinkan seseorang untuk menginstal macOS Big Sur, desktop Monterey, Catalina atau boot ke shell OSX.

Gambar buruh pelabuhan yang disediakan adalah:

  • macOS Catalina — kode sakit/docker-osx:terbaru(1,88GB)
  • macOS Big Sur — kode sakit/docker-osx:big-sur(2.1GB)
  • macOS Monterey — kode sakit/docker-osx:Monterey(2,08GB)
  • Shell OS X dengan tampilan visual — kode sakit/docker-osx:auto

Ada juga versi yang lebih lama:

  • macOS Mojave — kode sakit/docker-osx:mojave(1,91GB)
  • macOS High Sierra — kode sakit/docker-osx:high-sierra(1,91GB)

Proyek ini menawarkan fitur luar biasa seperti:

  • Mode otomatis penuh : boot langsung ke shell OSX dan bahkan menjalankan perintah sebagai argumen runtime
  • SSH di host lokal: 50922
  • macOS Monterey VM di Linux!
  • Versi NC di localhost: 8888 : versi VNC berada di direktori terpisah karena risiko keamanan yang terkait dengan penggunaan VNC
  • Mode tanpa kepala Xfvb
  • Berbagi folder
  • Bagan Helm Kubernetes.
  • X11 Penerusan
  • Gunakan iPhone OSX KVM di Linux menggunakan usbfluxd!
  • Buat ARMY dari wadah yang sama persis menggunakan docker commit
  • Riset keamanan iMessage melalui pembuat nomor seri!

Panduan ini akan menunjukkan cara menjalankan macOS di Docker Container menggunakan Docker-OSX.

Sebelum kamu memulai

Panduan ini akan berfungsi dengan baik jika hal-hal berikut terpenuhi:

  • Virtualisasi perangkat keras diaktifkan di BIOS
  • x86_64 Host berkemampuan KVM
  • Ruang disk 20GB+++ untuk instalasi minimum (50GB jika menggunakan Xcode)
  • Setidaknya 50 GB untuk :auto (setengah untuk gambar dasar, setengahnya lagi untuk gambar runtime Anda
  • Instal Docker
  • Instal QEMU pada sistem host

#1. Instal QEMU di Linux

Hypervisor KVM diperlukan untuk dapat menjalankan macOS di container Docker. Di bawah ini adalah daftar panduan untuk membantu Anda menginstal QEMU di mesin host Anda:

Setelah terinstal, tambahkan pengguna Anda ke grup kvm.

sudo usermod -aG kvm $USER

#2. Instal Docker di Linux

Panduan ini mengharuskan seseorang untuk menginstal mesin Docker. Jika Anda belum menggunakan panduan di bawah ini:

Tambahkan pengguna sistem Anda ke grup buruh pelabuhan.

sudo usermod -aG buruh pelabuhan $USER

buruh pelabuhan grp baru

Mulai dan aktifkan buruh pelabuhan:

sudo systemctl mulai buruh pelabuhan && sudo systemctl aktifkan buruh pelabuhan

#3. Jalankan macOS di Kontainer Docker

Sekarang lanjutkan dan jalankan distribusi macOS pilihan di wadah buruh pelabuhan. Ada beberapa variabel lingkungan yang dapat digunakan.

  • macOS Big Sur

Anda dapat menyesuaikan LEBAR dan TINGGI agar sesuai dengan resolusi yang Anda inginkan.

menjalankan buruh pelabuhan -it \

--device /dev/kvm \

-p 50922:10022 \

-e DEVICE_MODEL="iMacPro1,1" \

-e WIDTH=1600 \

-e HEIGHT=900 \

-v /tmp/.X11-unix :/tmp/.X11-unix \

-e "DISPLAY=$DISPLAY:-:0.0" \

-e GENERATE_UNIQUE=true \

-e MASTER_PLIST_URL=https://raw.githubusercontent.com/sickcodes/osx-serial-generator/ master/config-custom.plist \

kode sakit/docker-osx:big-sur

  • macOS Catalina

menjalankan buruh pelabuhan -it \

--device /dev/kvm \

-p 50923:10022 \

-e GENERATE_UNIQUE=true \

-e DEVICE_MODEL="iMacPro1,1" \

-e WIDTH=1600 \

-e HEIGHT=900 \

-v / tmp/.X11-unix:/tmp/.X11-unix \

-e "DISPLAY=$DISPLAY:-:0.0" \

kode sakit/docker-osx:terbaru

  • macOS Monterey

menjalankan buruh pelabuhan -it \

--device /dev/kvm \

-p 50924:10022 \

-e GENERATE_UNIQUE=true \

-e DEVICE_MODEL="iMacPro1,1" \

-e WIDTH=1600 \

-e HEIGHT=900 \

-v / tmp/.X11-unix:/tmp/.X11-unix \

-e "DISPLAY=$DISPLAY:-:0.0" \

-e GENERATE_UNIQUE=true \

-e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes /osx-serial-generator/master/config-custom.plist' \

kode sakit/docker-osx:monterey

  • macOS Sierra Tinggi

docker run -it \ --device /dev/kvm \ -p 50922:10022 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e "DISPLAY=$DISPLAY:-:0.0" \ kode sakit/docker-osx:high-sierra

  • macOS Mojave

docker run -it \ --device /dev/kvm \ -p 50922:10022 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e "DISPLAY=$DISPLAY:-:0.0" \ kode sakit/docker-osx:mojave

Opsi penyesuaian lainnya dapat dilakukan pada penampung seperti:

  • RAM , Core , SMP

Default RAM yang digunakan adalah 3GB, namun Anda bisa menambahnya tergantung RAM yang tersedia.

$ gratis -mh

total terpakai, buff/cache bersama gratis tersedia

Mem: 20.5Gi 5.8Gi 5.8Gi 322Mi 1.6Gi 10.1Gi

Tukar: 12.0Gi 922Mi 1.1Gi

Sesuaikan RAM, Cores, SMP menggunakan flag:

-e RAM=6 \

-e SMP=4 \

-e WARNA=4 \

  • Resolusi

Resolusi yang diinginkan dapat diatur menggunakan Tinggi dan lebar misalnya 800×600 akan menjadi:

-e LEBAR=800 \

-e TINGGI=600 \

  • Memasang disk Fisik

Anda dapat memasang disk fisik Mac OSX. Ekspor dulu variabelnya:

OSX_IMAGE="$PWD/mac_hdd_ng_xcode_bigsur.img"

DISK_TWO="$PWD/mount_me.img"

Sekarang ambil disk di buruh pelabuhan menggunakan flag -v.

-v "$OSX_IMAGE":/image \

-v "$DISK_TWO":/disktwo \

#4. Konfigurasikan Instalasi macOS Anda

Pengunduhan akan memakan waktu beberapa menit. Setelah selesai, Anda akan melihat popup ini.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX

Pilih Sistem Dasar macOS dan lanjutkan. Sistem akan menginisialisasi tampilan.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-1

Format Disk QEMU terbesar

Menggunakan Disk Utility memformat Disk QEMU terbesar.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-1

Untuk kasus ini, disk terbesar adalah 274,88 GB . Setelah dipilih, klik hapus .

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-3

Berikan nama untuk disk dan klik Hapus

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-4

Setelah selesai, Anda akan melihat ini.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-5

#5. Instal macOS di Mesin Virtual.

Tutup utilitas disk dan sekarang klik Instal ulang macOS Big Sur atau distribusi apa pun untuk kasus Anda.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-6

Klik lanjutkan untuk memulai instalasi.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-7

Setuju dengan persyaratan Lisensi.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-8

Pilih disk yang terhapus. Untuk kasus saya, saya menamakannya BigSur .

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-9

Duduk dan tunggu hingga instalasi selesai.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-10

Setelah selesai, VM macOS akan di-boot ulang. Pilih entri Penginstal macOS di sini.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-11

Setelah selesai, entri di atas akan diperbarui menjadi Big Sur . Sekarang Anda dapat boot ke instalasi baru Anda dengan mengkliknya.

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-13

Lanjutkan dan lakukan konfigurasi pasca instalasi seperti:

Setting negara atau wilayah kita

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-14

Atur bahasa pilihan

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-15

Tetapkan ID Apple, buat akun pengguna dan kata sandi, dll

Cara-Menjalankan-macOS-di-Docker-Container-menggunakan-Docker-OSX-16

Pasang/Bagikan direktori, file

Cara termudah untuk mencapai hal ini adalah dengan menggunakan sshfs

Pertama, buat direktori yang akan dibagikan/dipasang.

sudo mkdir /mnt/osx

sudo chmod -R 777 /mnt/osx

Sekarang gunakan sshfsuntuk me-mount/berbagi direktori:

sshfs pengguna@localhost:/ -p 50922 /mnt/osx

Setelah beberapa detik, direktori Anda akan terpasang.

#6. Kelola Mesin Virtual macOS

Mesin virtual macOS dapat dikelola menggunakan buruh pelabuhan. Untuk memulainya, dapatkan ID kontainer dengan perintah:

$ docker ps -a

PERINTAH GAMBAR ID KONTAINER DIBUAT NAMA PORT STATUS

9ce4b501ce82 kode sakit/docker-osx:big-sur "/bin/bash -c 'sudo …" 14 jam yang lalu Keluar (0) 22 menit yang lalu Loving_poincare

Gunakan ID kontainer untuk memulai VM.

buruh pelabuhan mulai Container_ID/Nama

Anda juga dapat mengonfigurasi VM untuk dijalankan sebagai layanan sistem dengan membuat file layanan.

sudo vim /etc/systemd/system/ BigSur_container .service

Tambahkan baris di bawah ini ke file:

[Unit]

Deskripsi=Kontainer semaphore



[Layanan]

Restart=selalu

ExecStart=/usr/bin/docker start -a Container_ID/Name

ExecStop=/usr/bin/docker stop -t 2 Container_ID/Name



[Instal]

WantedBy=local.target

Ingatlah untuk mengganti Container_ID/Nama di file sesuai kebutuhan. Muat ulang daemon sistem.

sudo systemctl daemon-reload

Sekarang Anda dapat memulai penampung sama seperti layanan sistem lainnya:

sudo systemctl mulai BigSur_container

Periksa status kontainer.

$ systemctl status BigSur_container

● BigSur_container.service - Kontainer semaphore

Dimuat: dimuat (/etc/systemd/system/BigSur_container.service; dinonaktifkan; preset vendor: >

Aktif: aktif (berjalan) sejak Rabu 01-06-2022 13:23:21 EAT; 13 detik yang lalu

PID Utama: 7368 (buruh pelabuhan)

Tugas: 8 (batas: 9070)

Memori: 18,0 juta

CGroup: /system.slice/BigSur_container.service

└─7368 /usr/bin/docker start -a 9ce4b501ce82



01 Juni 13: 23:39 buruh pelabuhan rumah[7368]: + untuk f di /sys/block/sd*/device/timeout

01 Jun 13:23:39 buruh pelabuhan rumah[7368]: + echo 300

Untuk menghentikan proses container:

sudo systemctl menghentikan BigSur_container

Untuk menghapus container Docker-OSX, pertama-tama, dapatkan daftar container yang tersedia.

wadah buruh pelabuhan ls -a

Hentikan wadahnya.

wadah buruh pelabuhan hentikan ID_or_Name

wadah buruh pelabuhan rm ID_or_Name

Hapus gambar:

gambar buruh pelabuhan ls

Kemudian hapus gambar yang teridentifikasi:

gambar buruh pelabuhan rm Image_ID

Itu menandai akhir dari panduan tentang cara menjalankan macOS di Docker Container menggunakan Docker-OSX. Saya harap belajar banyak dari panduan ini.

Sekian Terimakasih....