오늘 github 의 trending repository 를 보다가 신박한 프로젝트를 발견했습니다.
바로 docker 로 OSX를 돌리는 Docker-OSX 인데요.
terminal 뿐만 아니라 X11 packet 을 forwarding 해주므로 XCode 같은 Desktop 앱도 Windows 에서 Xming 같은 X Windows Server 를 설치하면 실행할 수 있습니다.
설치
QEMU 를 사용하므로 BIOS 에서 가상화를 사용하도록 설정한 후에 재부팅을 해줍니다.
Host OS 에 관련 패키지를 먼저 설치해야 합니다.
$ sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
BASH
RHEL이나 CentOS 는 다음 패키지를 설치하면 됩니다.
$ sudo yum install libvirt qemu-kvm
BASH
패키지 설치가 끝났으면 systemd 로 서비스를 구동하고 kvm 커널 모듈을 설정합니다.
sudo systemctl enable libvirtd.service
sudo systemctl enable virtlogd.service
echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs
sudo modprobe kvm
BASH
설정이 끝났으면 시스템을 재부팅해줍니다.
sudo systemctl reboot
BASH
사용
재부팅후에는 OSX 컨테이너를 내려받습니다.
RHEL/CentOS 8 나 fedora 를 사용한다면 docker 대신 podman 을 사용해야 합니다. 아니면 다음 에러가 발생합니다.
docker: Error response from daemon: OCI runtime create failed: this version of runc doesn't work on cgroups v2: unknown.
$ docker pull sickcodes/docker-osx:latest
BASH
위 이미지는 약 17G 정도 크기라 꽤 시간이 걸립니다. GUI 없이 SSH 로 연결해서 command line 에서만 사용하려면 auto 이미지를 pull 받으면 됩니다.
$ docker pull sickcodes/docker-osx:auto
BASH
카탈리나를 구동하려면 latest 태그를 사용하면 됩니다.
$ 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
BASH
auto 이미지를 사용할 경우 다음 부분은 주석 처리해야 합니다.
# -v /tmp/.X11-unix:/tmp/.X11-unix \
# -e "DISPLAY=${DISPLAY:-:0.0}" \
BASH
Big Sur 도 구동 가능하며 tag 를 big-sur 로 지정하고 구동합니다.
$ 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
BASH
gtk 초기화 에러가 나면 다음 명령어로 X Windows 에 연결 가능하도록 설정해 주세요.
![](/container/files/106856663/106856791/1/1616248835000/image2021-3-20_23-0-35.png)
컨테이너가 커서 몇 분을 기다려야 구동이 됩니다.
![](/container/files/106856663/106856793/1/1616248895000/image2021-3-20_23-1-35.png)
Mac OSX 가 구동되면 "Disk Utility" 를 실행한 후에 200G 로 잡혀 있는 디스크를 지워줍니다. 이 과정에서 작은 용량 디스크는 수정하면 안 됩니다.
![](/container/files/106856663/106856803/1/1616252486000/image2021-3-21_0-1-25.png)
"Disk Utility" 를 종료하고 "Reinstall macOS" 를 선택해서 설치해 줍니다.
Ref