sickcodes / Docker-OSX

Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers.
https://hub.docker.com/r/sickcodes/docker-osx
GNU General Public License v3.0
36.1k stars 1.78k forks source link

Unable to run Docker inside Docker-OSX #346

Open rationalthinker1 opened 2 years ago

rationalthinker1 commented 2 years ago

Hello, I want to install Docker to get it test some build process. However, I get this error. Docker requires a processor with virtualization capabilities and hypervisor support. image

rationalthinker1 commented 2 years ago

I used to do it before in vmware. Linux -> windows 10 -> Linux

sickcodes commented 2 years ago

@rationalthinker1

Via: https://github.com/kholia/OSX-KVM/blob/master/notes.md

Use the sysctl kern.hv_support (output 1 is good) command to check if Hypervisor is enabled within the macOS VM.

If Hypervisor is not enabled, check that you have the required CPU features. Run the sysctl -a | grep machdep.cpu.features command and look for the presence of VMX flag.

rationalthinker1 commented 2 years ago

How do I add the vmx flag? How do i do the following:

Make sure that kvm_intel module is loaded properly. This is documented in our main documentation.

Make sure the VM is booted with VMX support passed through using one of the two below strategies:

You may add vmx,rdtscp arguments to the -cpu option in boot-macOS.sh file (easier option).

You may add +vmx, to the front of MY_OPTIONS in the boot script while changing -cpu Penryn to -cpu Skylake-Client or any other suitable supported CPU.

Note: Host CPU passthrough is troublesome and not generally recommended.

rationalthinker1 commented 2 years ago

Just wanted to give an update. I did get it to work. I did the following

Ran docker build -t docker-osx -f Dockerfile.naked -t docker-osx-custom . in the project folder.

Ran this to start docker-osx

docker run -it \
 --device /dev/kvm \
 -p 50922:10022 \
 -p 24800:24800 \
 -p 222:22 \
 -v "${PWD}/mac_hdd_ng.img:/image" \
 -v /tmp/.X11-unix:/tmp/.X11-unix \
 -e "DISPLAY=${DISPLAY:-:0.0}" \
 -e "NOPICKER=false" \
 -e "RAM=8" \
 -v "/home/raza:/mnt/hostshare" \
 -e EXTRA="-virtfs local,path=/mnt/hostshare,mount_tag=hostshare,security_model=passthrough,id=hostshare" \
 docker-osx-custom
thematrixdev commented 2 years ago

Thanks @rationalthinker1 . I am trying out on the same stuff now! Will @sickcodes merge the change if it works? Or I have to follow @rationalthinker1 's guide and build my custom image?

sickcodes commented 2 years ago

Just wanted to give an update. I did get it to work.

I did the following

  • I cloned this project

  • found all references in dockerfiles to Penryn to changed to max.

  • Added +vmx flag in helm.values. Also changed Penryn to max in helm.values

Ran docker build -t docker-osx -f Dockerfile.naked -t docker-osx-custom . in the project folder.

Ran this to start docker-osx


docker run -it \

 --device /dev/kvm \

 -p 50922:10022 \

 -p 24800:24800 \

 -p 222:22 \

 -v "${PWD}/mac_hdd_ng.img:/image" \

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

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

 -e "NOPICKER=false" \

 -e "RAM=8" \

 -v "/home/raza:/mnt/hostshare" \

 -e EXTRA="-virtfs local,path=/mnt/hostshare,mount_tag=hostshare,security_model=passthrough,id=hostshare" \

 docker-osx-custom

Looks good to me, I think it's time to merge the max. Will try and test all the images over the weekend.

Need to test this on all 4 first:

-e MASTER_PLIST_URL= https://raw.githubusercontent.com/sickcodes/OS X-serial-generator/kvm-opencore-14/config-custom.plist \

To merge this for monterey: https://github.com/sickcodes/osx-serial-generator/pull/19