Lời nói đầu

Nếu bạn từng muốn có ngay một chiếc macOS để dùng vài tiếng nhưng lại bị chặn bởi các bước như tải bộ cài, tạo VM, cấu hình UEFI/virtio, chờ đợi… và trong đầu nảy ra suy nghĩ giờ mà chỉ cần gõ vài command là có máy macOS dùng luôn thì tiện.

Hay có team QA/Dev nhờ bạn spin up nhanh một macOS để test Safari, kiểm tra UI/UX, chạy thử app, dựng lab học, demo cho khách,… Nhưng nếu làm theo cách truyền thống thì bạn phải đánh đổi thời gian cài đặthàng chục GB dung lượng, hoặc chi phí VPS/Cloud, hay cấp thêm thiết bị, bạn có thể dựng một môi trường tách biệt để họ truy cập qua private network.

Thì chính xác giải pháp trong bài này là điều đáng để bạn quan tâm: chạy macOS trên Docker bằng KVM, truy cập qua web viewer (và tùy chọn VNC) hoặc remote như thông thường.

Lợi ích khi sử dụng macOS trên Docker

  1. Triển khai cực nhanh – chỉ cần chuẩn bị host và vài lệnh Docker là có môi trường macOS để dùng.
  2. Tự động hóa dễ dàng – có thể đóng gói vào script/pipeline để spin up và xoá môi trường theo nhu cầu.
  3. Tiết kiệm thời gian vận hành – giảm công cài đặt thủ công VM, giảm lỗi vặt do mỗi người cài mỗi kiểu.
  4. Khởi tạo lại dễ dàng – tạo/xoá/tạo lại nhiều lần, phù hợp lab và test ngắn hạn.
  5. Đa dạng phiên bản – đổi VERSION để cài các đời macOS khác nhau.
  6. Tối ưu cho lab nội bộ – chạy trong private network, người dùng truy cập qua IP nội bộ.
  7. Không cần desktop GUI trên server – thao tác qua web viewer, tùy chọn VNC khi cần.
  8. Chủ động tài nguyên – tuỳ chỉnh RAM/CPU/DISK theo nhu cầu test.
  9. Phù hợp nhiều đối tượng – DevOps, QA, tester, sinh viên, security team đều có thể tận dụng.
  10. Dễ chia sẻ/backup dữ liệu – bind volume /storage để lưu disk và dữ liệu cài đặt.

Chuẩn bị môi trường

Tùy vào hạ tầng và bài toán của bạn để có hạ tầng phù hợp. Dưới đây là cấu hình đề xuất nếu bạn muốn làm Lab để nắm kiến thức: server Ubuntu chạy trên VMware, phần cứng máy chủ cần hỗ trợ công nghệ ảo hóa (Virtualization).

Hệ điều hànhCPURAMỔ cứng
Ubuntu Server4 Core8 GB100 GB

Bật tính năng ảo hóa sâu

Bước 1. Đảm bảo đã tắt VM.

Bước 2. Cấu hình bật Nested VT-x/EPT

  • vSphere/ESXi
    • Chuột phải VM → Edit Settings → VM Options → Advanced → Configuration Parameters…
    • Thêm (hoặc sửa) khóa: vhv.enable = "TRUE"
    • CPU: bảo đảm “Hardware virtualization” được bật (Expose virtualization extensions to the guest OS). Với UI mới: CPU → Advanced → tick “Expose virtualization extensions to the guest OS”.
    • Nếu có mục CPU/MMU Virtualization, chọn “Intel VT-x/EPT”.
  • VMware Workstation / Fusion
    • Chuột phải VM → Settings → Processors → Chọn “Virtualize Intel VT-x/EPT or AMD-V/RVI”.
    • (Tuỳ chọn) Chọn “Virtualize CPU performance counters”.

Bước 3. Bật lại VM, kiểm tra guest đã thấy VT-x:

grep -m1 -o 'vmx' /proc/cpuinfo || echo "NO_VMX"

Kết quả chính xác sẽ thấy vmx.

Cài đặt macOS container trên Docker

Dùng Docker CLI

docker run -it --rm --name macos \
  -e "VERSION=14" \
  -p 8006:8006 \
  --device=/dev/kvm \
  --device=/dev/net/tun \
  --cap-add NET_ADMIN \
  -v "${PWD}/macos:/storage" \
  --stop-timeout 120 \
  docker.io/dockurr/macos

Dùng Docker Compose

services:
  macos:
    image: dockurr/macos
    container_name: macos
    environment:
      VERSION: "14"
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 5900:5900/tcp
      - 5900:5900/udp
    volumes:
      - ./macos:/storage
    restart: always
    stop_grace_period: 2m

Khởi chạy container macOS

docker compose up -d

Kiểm tra logs sẽ thấy kết quả như sau:

Truy cập trên trình duyệt với địa chỉ http://IP_SERVER:8006 sẽ thấy macOS đang được khởi tạo qua web viewer.

Cài đặt macOS trong web viewer

Mở Disk Utility → chọn ổ lớn nhất dạng Apple Inc. VirtIO Block Media.

Chọn Erase → format APFS (đặt tên tùy ý).

Đóng Disk Utility → chọn Reinstall macOS.

Chọn đúng disk vừa tạo để cài đặt.

Nhấn các bước tiếp tục sẽ thấy màn hình thiết lập đang được khởi chạy

Giao diện MacOS quen thuộc đã hiện lên

Tiến hành setup những bước đầu tiên

Tới màn Migration Assistant chọn Not now.

Apple ID chọn Set Up Later → Skip. Sau đó chấp nhận điều khoản và điều kiện.

Tạo user/password cho máy và thực hiện các bước thiết lập thiết bị.

Thiết lập thành công và sử dụng như bình thường

Các tùy chỉnh cấu hình và mở rộng

Chọn phiên bản macOS

Mặc định cài macOS 14, bạn có thể đổi bằng biến môi trường VERSION:

Giá trịPhiên bản macOSDung lượng bộ cài xấp xỉGhi chú
15macOS Sequoia~14 GBApple Account sign-in còn hạn chế
14macOS Sonoma~14 GB
13macOS Ventura~12 GB
12macOS Monterey~12 GB
11macOS Big Sur~12+ GB

Lưu ý: Dung lượng bộ cài có thể thay đổi theo bản cập nhật và cách Apple phân phối.

Tăng dung lượng đĩa

Mặc định 64GB, đổi bằng DISK_SIZE (ví dụ 256G):

environment:
  DISK_SIZE: "256G"

Tăng RAM/CPU

Dùng RAM_SIZE và CPU_CORES:

environment:
  RAM_SIZE: "8G"
  CPU_CORES: "4"

Lưu ý với AMD: nếu bạn dùng CPU AMD, repo có khuyến nghị nên để 1 core trong lúc cài; sau khi cài xong và chạy ổn rồi hãy tăng cores để tránh lỗi khó debug.

Kết luận

Với Docker, việc triển khai macOS không còn là một quá trình phức tạp và tốn thời gian nữa. Chỉ với vài lệnh, bạn có thể dựng nhanh một môi trường macOS phục vụ test/demo/lab nội bộ, truy cập tiện lợi qua web viewer, và tuỳ chỉnh tài nguyên theo nhu cầu. Đây không chỉ là cách dựng macOS nhanh hơn, mà còn là một bước giúp bạn làm việc hiệu quả và chủ động hơn trong nhiều tình huống thực tế.

Leave a Reply

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.