Hieu Solutions
Technology

Cách chạy MacOS trên Docker

January 1, 1970
25 views
Cách chạy MacOS trên Docker

Cách chạy MacOS trên Docker

DevOps VietNam Research     23:47

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.

State of DevOps VietNam 2026

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 đặt, hàng chục GB dung lượng, hoặc chi phí VPS/Cloud, hay cấp thêm thiết bị. Giải pháp trong bài này là: 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.

Đây là môi trường ảo hoá chạy qua KVM; dùng đúng bài toán để đạt hiệu quả tốt nhất.

Các bước cài đặt macOS trên Docker

Step 1: Chuẩn bị

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ành RAM CPU Dung lượng lưu trữ
Ubuntu Server 8 GB 4 Core 100 GB

Step 2: Bật Nested VT-x/EPT trên VMware

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 OptionsAdvancedConfiguration 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.

Step 3: Cài đặt macOS trên Docker

Đảm bảo server đã được cài Docker và Docker Compose phiên bản không quá cũ. Bạn có thể tham khảo hướng dẫn cài Docker nhanh nếu cần.

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 macOS trên Docker:

docker compose up -d

Kiểm tra logs:

docker logs -f macos

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.

Step 4: Các bước cài macOS trong web viewer

  1. Mở Disk Utility → chọn ổ lớn nhất dạng Apple Inc. VirtIO Block Media.
  2. Chọn Erase → format APFS (đặt tên tùy ý).
  3. Đóng Disk Utility → chọn Reinstall macOS.
  4. Chọn đúng disk vừa tạo để cài đặt.
  5. 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.
  6. Giao diện MacOS quen thuộc đã hiện lên.
  7. Tiến hành setup những bước đầu tiên.
  8. Tới màn Migration Assistant chọn Not now.
  9. Apple ID chọn Set Up LaterSkip.
  10. Tạo user/password cho máy và thực hiện các bước thiết lập thiết bị.
  11. Khởi chạy thành công.

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

Chọn phiên bản macOS

Giá trị Phiên bản macOS Dung 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; coi đây là số liệu tham khảo.

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_SIZECPU_CORES:

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

Lưu ý với AMD: nếu bạn dùng CPU AMD, repo 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.

(Tuỳ chọn) Troubleshooting nhanh

  • Treo ở boot / đứng màn hình đen / log dừng ở “HANDOFF TO XNU”: kiểm tra lại nested VT-x/EPT đã bật, host có hỗ trợ ảo hóa, và đảm bảo container được gắn /dev/kvm.
  • BdsDxe: failed to load Boot… / Not Found: thử dừng container, xoá thư mục ./macos (storage cũ) rồi chạy lại để tạo disk mới sạch.
  • Không vào được web viewer: kiểm tra firewall/port mapping, đảm bảo 8006 được mở và truy cập đúng IP_SERVER.
  • Không có Internet trong macOS: kiểm tra network của host/VM, kiểm tra container có --cap-add NET_ADMIN và gắn /dev/net/tun.
  • Thiếu dung lượng khi cài: tăng DISK_SIZE và chạy lại từ đầu.

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.

Tags: Docker, macOS, Setup

💬 What do you think?

Share your thoughts or connect with me on social media!