# Docker에서 QEMU로 실행되는 macOS

> Clean Markdown view of GeekNews topic #16114. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16114](https://news.hada.io/topic?id=16114)
- GeekNews Markdown: [https://news.hada.io/topic/16114.md](https://news.hada.io/topic/16114.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-08-01T09:37:14+09:00
- Updated: 2024-08-01T09:37:14+09:00
- Original source: [github.com/sickcodes](https://github.com/sickcodes/Docker-OSX)
- Points: 3
- Comments: 1

## Topic Body

### Docker-OSX

#### Docker-OSX 소개
- Docker-OSX는 Docker 컨테이너에서 macOS를 실행할 수 있게 해주는 프로젝트임.
- X11 포워딩, iMessage 보안 연구, iPhone USB 작동 등 다양한 기능을 제공함.
- Linux와 Windows에서 macOS 보안 연구를 수행할 수 있음.

#### 커뮤니티 및 지원
- Docker-OSX는 Discord와 Telegram 서버를 운영 중임.
- 질문이나 아이디어를 공유할 수 있는 활발한 커뮤니티가 있음.
- 개인적인 문의는 LinkedIn이나 Sick.Codes 웹사이트를 통해 가능함.

#### 저자 및 기여자
- 이 프로젝트는 Sick.Codes가 유지 관리함.
- 추가 기여자 목록은 GitHub에서 확인 가능함.
- OSX-KVM과 KVM-OpenCore 프로젝트에 감사의 인사를 전함.

#### 빠른 시작 가이드
- 비디오 설치 튜토리얼 제공.
- Windows 사용자는 추가 노트를 확인할 것.
- Catalina, Big Sur, Monterey, Ventura, Sonoma 등 다양한 macOS 버전을 지원함.

##### Catalina
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:latest
```

##### Big Sur
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:big-sur
```

##### Monterey
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -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' \
  sickcodes/docker-osx:monterey
```

##### Ventura
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -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' \
  sickcodes/docker-osx:ventura
```

##### Sonoma
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  -e CPU='Haswell-noTSX' \
  -e CPUID_FLAGS='kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on' \
  -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom-sonoma.plist' \
  sickcodes/docker-osx:sonoma
```

##### Catalina 사전 설치
```bash
docker pull sickcodes/docker-osx:auto
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  sickcodes/docker-osx:auto
```

#### 구형 시스템
##### High Sierra
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:high-sierra
```

##### Mojave
```bash
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:mojave
```

#### 이미지 수동 다운로드 및 사용
- Docker의 CDN이 느릴 경우 수동으로 이미지를 다운로드하여 사용할 수 있음.
```bash
wget https://images2.sick.codes/mac_hdd_ng_auto.img
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v "${PWD}/mac_hdd_ng_auto.img:/image" \
  -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/Docker-OSX/master/custom/config-nopicker-custom.plist \
  sickcodes/docker-osx:naked
```

#### iPhone USB 패스스루
- iPhone USB 패스스루를 위한 다양한 방법 제공.
- 데스크탑 PC에서는 @Silfalion의 지침을 따를 수 있음.
- 노트북에서는 usbfluxd를 사용하여 네트워크 스타일 패스스루 가능.

#### 성능 최적화
- osx-optimizer를 사용하여 성능을 향상시킬 수 있음.
- GUI 로그인 화면 건너뛰기, Spotlight 인덱싱 비활성화 등 다양한 최적화 옵션 제공.

#### 디스크 공간 증가
- /var/lib/docker를 외부 드라이브로 이동하여 디스크 공간을 확보할 수 있음.
- 자세한 튜토리얼은 Sick.Codes 웹사이트에서 확인 가능.

#### 기술적 세부사항
- 다양한 macOS 버전 지원: High Sierra, Mojave, Catalina, Big Sur, Monterey, Ventura, Sonoma.
- iPhone OSX KVM, 폴더 공유, USB 패스스루, SSH 및 VNC 지원.
- X11 포워딩 및 QEMU + KVM 기반 실행.

#### 요구사항
- 최소 20GB 이상의 디스크 공간 필요.
- BIOS 설정에서 가상화 활성화 필요.
- x86_64 KVM 호스트 필요.

#### TODO
- 보안 연구를 위한 문서화.
- GPU 가속 지원.
- virt-manager 지원.

#### Docker 이미지
- Docker Hub에서 Docker-OSX 이미지를 다운로드할 수 있음.

#### Kubernetes 지원
- Docker-OSX는 Kubernetes를 지원함.
- Kubernetes Helm Chart 및 문서는 helm 디렉토리에서 확인 가능.

#### 지원
- 작은 질문이나 이슈는 GitHub 이슈를 통해 문의 가능.
- 전문적인 지원 서비스도 제공함.

#### 라이선스 및 기여
- Docker-OSX는 GPL v3+ 라이선스를 따름.
- 기여를 환영하며, 기여자 목록은 GitHub에서 확인 가능.

#### 유사 프로젝트
- Dock Droid: Docker 컨테이너에서 Android 실행.
- Docker-eyeOS: Docker 컨테이너에서 iOS 12 실행.
- Bluebubbles.app: Docker에서 iMessage 리레이어 실행.

#### 면책 조항
- Apple 보안 연구에 관심이 있다면 이 프로젝트가 유용할 것임.
- Hackintosh, OSX-KVM, Docker-OSX의 법적 문제는 각자의 책임임.

### GN⁺의 정리
- Docker-OSX는 Docker 컨테이너에서 macOS를 실행할 수 있게 해주는 유용한 도구임.
- 다양한 macOS 버전을 지원하며, 보안 연구 및 개발에 유용함.
- 커뮤니티 지원이 활발하며, 다양한 설치 및 최적화 옵션을 제공함.
- 비슷한 기능을 가진 프로젝트로는 Dock Droid와 Docker-eyeOS가 있음.

## Comments



### Comment 27728

- Author: neo
- Created: 2024-08-01T09:37:15+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41116473) 
- GPU 가속을 위해서는 PCI 패스스루를 통해 지원되는 dGPU(AMD RX 6xxx 이상)를 사용해야 함
  - Intel iGPU는 Comet Lake와 일부 Ice Lake까지 작동하지만, 최신 버전은 작동하지 않음
  - Apple Silicon 빌드의 MacOS는 당분간 에뮬레이션이 불가능할 것으로 보임
  - Intel VT-x가 AMD에 없기 때문에 AMD 호스트에서 가상화가 불가능함
  - 오래된 VirtualBox 버전으로 Docker를 에뮬레이션을 통해 작동시키는 방법이 있음

- 관련 프로젝트:
  - Docker-OSX: Docker에서 macOS VM 실행
  - macOS in QEMU in Docker: QEMU에서 macOS 실행

- Sick Codes와의 인터뷰에서 이 제품에 대한 접근 방식을 논의함
  - OSX-PROXMOX: Proxmox 홈 서버에서 유사한 기능을 제공하는 프로젝트
  - HP Z420 Xeon에서 사용 중이며, GPU 패스스루와 함께 매우 안정적임

- 홈 서버에서 iCloud 동기화를 실행하는 것이 멋질 것 같음
  - 현재 iCloud를 홈 서버/NAS에 물리적으로 백업할 좋은 방법이 없음

- 이 프로젝트는 현재 x86-64 Docker 이미지만 제공하며, aarch64는 제공하지 않음

- iOS 빌드를 시도해보고 싶음
  - Unity, React Native 등을 사용하여 빌드 가능성을 탐색하고 싶음
  - 빌드 시간이 5배 더 걸리더라도 자유로움 측면에서 멋질 것 같음

- QEMU가 컨테이너에서 실행되고, 그 안에서 macOS가 실행됨
  - 설치가 매우 간편하며 수동 설정 단계가 없음
  - macOS EULA를 명백히 위반할 가능성이 있음
  - Apple 소프트웨어는 Apple 브랜드 컴퓨터에서만 실행할 수 있음
  - 프로젝트를 다운로드하여 보관할 것을 권장하며, 법적 경고를 받을 수 있음

- MacOS 이미지를 재배포하는 것이 라이선스에 의해 허용되는지 궁금함
  - 이 프로젝트가 Docker Hub에서 불법 복사본을 배포하는지 의문임

- Intel 지원이 없는 최신 MacOS 버전이 출시되면 진행이 중단될지 궁금함
  - 이 컨테이너 안에서 Docker를 실행하여 MacOS를 MacOS 안에서 실행할 수 있는지 궁금함

- "USB 패스스루"라는 용어가 잘못 사용되는 것을 싫어함
  - 실제로는 "USB over ethernet proxy"가 사용됨
  - 이는 일반적인 패스스루가 가지지 않는 여러 단점을 초래함
